【问题标题】:Compiling program with Open Source libFTDI使用开源 libFTDI 编译程序
【发布时间】:2016-10-01 12:45:40
【问题描述】:

我使用安装了 Advanced Tomato 的华硕路由器(基于 ARMv7 proc) 作为我的 ARMv7 开发者平台。我安装编译器(gcc - 5.4.0-1) 加上来自 OpenWRT Linux 的依赖项和 libFTDI (libftdi1 - 1.3-1) 回购。 OpenWRT 不提供 libftdi-dev,所以我将 ftdi.h 文件从 libFTDI 下载页面直接复制到 /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

那么问题是什么?

【问题讨论】:

  • 如果您不得不将 /opt/usr/local/lib/ 放入 runtime 搜索路径,为什么您不也将其作为链接时间传递搜索路径?确实,如果工具链实际上已为您运行它的环境正确配置,您会做得更好。
  • 呸,错误的欺骗目标。哦,好吧,take your pick, there's only ~2300...

标签: linux compilation armv7 ftdi


【解决方案1】:

我不知道为什么(可能是错误),但对于取自 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

从我的角度来看 - 话题已结束

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多