在交叉编译中找不到动态链接库

时间:2016-01-02 18:12:41

标签: c++ gcc shared-libraries embedded-linux

我一直在尝试动态链接共享对象和二进制文件。一切都很好,直到我尝试运行它,这给了我:

/tmp/test: error while loading shared libraries: libxl.so: cannot open shared object file: No such file or directory

ldd也显示无法找到该文件。当然,有问题的库位于默认位置(/ lib / arm-linux / gnueabihf)。在复制库之后我也运行了ldconfig。

我检查了以下内容:

  • 设置rpath以包含位置
  • 使用正确的位置设置LD_LIBRARY_PATH
  • 创建了一个具有相同名称的虚拟共享对象 - 它被成功找到(当然没有必要的符号)

该库创建为:

ELF 32-bit LSB shared object, ARM, EABI4 version 1 (SYSV), dynamically linked

而测试二进制文件是:

ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked

EABI版本可以在运行时导致这些问题吗?还有什么我可以尝试让它运行吗?

1 个答案:

答案 0 :(得分:0)

库路径必须是HOST计算机中的库而不是目标计算机的位置。看来“/ lib / arm-linux / gnueabihf”是目标机器中库的位置。

在工具链sysroot中找到libxl.so的正确路径。

相关问题