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

Dynamically linked library cannot be found in cross-compilation

本文关键字:动态链接库 找不到 交叉编译      更新时间:2023-10-16

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

/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版本是否会导致运行中出现此类问题?还有什么我可以试着让它运行的吗?

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

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