2016-10-01 25 views
0

編譯程序我使用Asus路由器(基於ARMv7 proc),並在其上安裝了Advanced Tomato 作爲我的ARMv7開發人員平臺。我從OpenWRT Linux repo安裝編譯器(gcc - 5.4.0-1) 加依賴關係和libFTDI(libftdi1 - 1.3-1)。 OpenWRT不提供libftdi-dev,因此我直接從libFTDI下載頁面將ftdi.h文件複製到/ opt/include。我嘗試直接從libFTDI樣本中編譯程序。該 編譯器命令是:使用開源libFTDI

gcc -v -Wl,-rpath=/opt/usr/local/lib -Wl,--dynamic-linker=/opt/lib/ld-linux.so.3 -L/opt/lib -O2 -pipe -march=armv7-a -mtune=cortex-a9-fno-caller-saves -mfloat-abi=soft -l ftdi1 d.c -o d 

但由於編譯失敗:

/opt/bin/ld: cannot find -lftdi1 

但有/opt/usr/local/lib/libftdi1.solibftdi1.so.2

我的LD_LIBRARY_PATH是這樣的:

/lib:/usr/lib:/usr/local/lib:/opt/lib:/opt/usr/lib:/opt/include:/opt/usr/local/lib:/opt/usr/include 

所以我有什麼問題S'

+0

如果您在到bodge /選擇在/ usr/local/lib目錄/成_runtime_搜索路徑,howcome你」不要將它作爲鏈接時間搜索路徑傳遞?真的,如果你的工具鏈實際上已經正確地配置了你正在運行的環境,你會變得更好。 – Notlikethat

+0

Bah,錯誤的重複目標。噢,[請選擇,只有〜2300](http://stackoverflow.com/search?q=ld+cannot+find+is%3Aq)... – Notlikethat

+0

[這可能是最好的](http ://stackoverflow.com/q/16710047/3156750) – Notlikethat

回答

0

我不知道爲什麼(可能是bug),但對於從OpenWRT回購的編譯器,必須在/opt/lib有想要的庫。因此,只需複製libftdi1.so.2.3.0文件並將其鏈接到libftdi1.so解決的問題。這意味着它不會正確使用LD_LIBRARY_PATH變量。最後編譯命令如下:

gcc -v -Wl,-rpath=/opt/usr/local/lib -Wl,--dynamic-linker=/opt/lib/ld-linux.so.3 -L/opt/lib -O2 -pipe -march=armv7-a -mtune=cortex-a9 -fno-caller-saves -mfloat-abi=soft -l ftdi1 arco.c -o arco 

從我的角度來看 - 專題封閉