我使用安装了 Advanced Tomato 的华硕路由器(基于 ARMv7 proc) 在它上面作为我的 ARMv7 开发者平台。我安装编译器 (gcc - 5.4.0-1) 加上来自 OpenWRT Linux 的依赖项和 libFTDI (libftdi1 - 1.3-1) repo 。 OpenWRT 不提供 libftdi-dev 所以我直接从 libFTDI 下载页面复制 ftdi.h 文件到/opt/include。我尝试编译直接从 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.so
链接到 libftdi1.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
那么问题是什么?
最佳答案
我不知道为什么(可能是错误)但是对于从 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
从我的角度来看-主题关闭
关于linux - 使用开源 libFTDI 编译程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39806757/