2016-10-01 28 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 

从我的角度来看 - 专题封闭