我有一个程序在 Ubuntu ARM (12.04) 上编译得很好,但由于链接错误而无法运行。例如,找不到 libX11.so.6,但它显然在
/usr/lib/arm-linux-gnueabihf
ldconfig -v shows it as well
奇怪的是,当我将 LD_LIBRARY_PATH=/usr/lib/arm-gnueabihf/ 传递给 ldd(在共享库之后)时,我收到消息
ldd: LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/: No such file or directory
虽然目录显然存在。可能出了什么问题?我运行了 sudo ldconfig。
答案1
你可能混合了生物素酶。由于 ARM CPU 种类繁多,目前有几种常用的 ARM 处理器 ABI。请检查您是否拥有格努埃阿比赫夫二进制文件,而不是 gnueabi 二进制文件。您可以在同一系统上安装这两种二进制文件,但不能在单个可执行文件中链接这两种库。这就像 x86 系统上的 32 位和 64 位可执行文件一样。
使用LD_LIBRARY_PATH
,在命令持续时间内将变量添加到环境中的正确命令ldd
是
LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/ ldd /path/to/binary
您写了ldd LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/ /path/to/binary
什么告诉ldd
对名为 的文件执行操作LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/
。