【问题标题】:Compiling problems with shared libraries共享库的编译问题
【发布时间】:2015-04-02 17:35:58
【问题描述】:

我尝试编译一些代码,这些代码在 ubuntu 14.04 LTS 下的主 PC 上运行。现在我想用一个带有 linux 的小板(Zedboard)来控制 EnOceanreceiver。
我使用 Linaro 12.11 和 C++ 编程。

如果我编译,没有错误。但是如果我想启动程序来: 加载共享库时出错:libEOLink.so.0:无法打开共享对象文件:没有这样的文件或目录

我的 Makefile 看起来像:

all: EnOcean.cpp
   g++ -I/homelinaro/EOLink EnOcean.cpp -o EnOcean -L/usr/local/lib -lEOLink

我在 /usr/local/lib 下找到了数据,但不管有没有都没有帮助。

感谢您的帮助!

【问题讨论】:

    标签: c++ linux compilation


    【解决方案1】:

    如果 libEOLink.so.0 可以在 /usr/local/lib 中找到,则不需要将其添加到 LD_LIBRARY_PATH,因为这应该已经是路径的一部分。库可能依赖于其他未找到的库。要确定是否是这种情况,请运行:

    ldd /usr/local/lib/libEOLink.so.0

    如果没有找到任何依赖项,则会报告。

    我还假设您为您的目标系统编译了 libEOLink。

    【讨论】:

    • 我回来了:libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb6e2e000) libm.so.6 => /lib/arm- linux-gnueabihf/libm.so.6 (0xb6dc2000) libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6cde000) /lib/ld-linux-armhf.so.3 (0xb6f19000 ) libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6cbc000) 但我有这个数据。但是十六进制数是什么意思? /usr/lib/local/lib 也在 LD_LIBRARY_PATH 中。
    • 这是库的加载地址,对您的目的并不重要。只是为了验证一下,您确实为您的目标 ARM 架构构建了 libEOLink.so.0,对吧?
    • 您好,现在可以使用了。我再次提示(我不知道这是否是解决方案) ->sudo sh -c 'echo SUBSYSTEMS==\"usb\", KERNEL==\"ttyUSB?\", ATTRS{interface}==\ "EnOcean USB300 ??\",MODE=\"0666\", SYMLINK+=\"USB300\" > /etc/udev/rules.d/70-enocean-stick.rules' ->sudo /etc/init.d /udev 重启->sudo chmod 777 /dev/ttyUSB0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    相关资源
    最近更新 更多