linux - 使用开源 libFTDI 编译程序

标签 linux compilation armv7 ftdi

我使用安装了 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/

相关文章:

c - 主存中的操作系统内核和进程

linux - Atom 和 Visual Studio Code 编辑器 : Numpad behavior

java - 使用列表创建队列时出现编译错误

emacs - 如何自动(重新)编译 ELPA 包?

ios - MLKit iOS : Undefined symbols for architecture armv7

ios - 此处无法针对 armv7 进行编译,有效架构为 armv6、armv7 和 i386

ios - ZBar:架构 armv7 的 undefined symbol

c++ - Linux C++ TCP 套接字 - 启用阻塞模式

ruby-on-rails - rvm 在根据默认设置重新启动后切换到旧的 ruby​​ 版本

.NET const 影响编译的程序集大小