我正在尝试在 Linux 操作系统自定义板上运行一个应用程序 (a.out
),非常小的应用程序只包含一个打印语句,/lib 中没有共享库
或 /usr/lib
。
所以我使用LD_LIBRARY_PATH
导出共享库路径
export LD_LIBRARY_PATH=/media/opensourcelib/toolchainLib/ramfslib
我确定,共享库在这个路径 /media/opensourcelib/toolchainLib/ramfslib
仍然,在此之后,当我执行 a.out
时,我得到了错误
/bin/sh: ./../usr/lib/a.out: not found
如果我将我的共享库复制到 /lib
,应用程序可以正常工作。
但我需要在不复制共享库的情况下让它工作。请帮助我,导出 LD_LIBRARY_PATH
可能是什么问题。
最佳答案
我会做以下事情:
- 检查路径是否正确。可能是大写或小写字母或任何其他拼写错误。尝试
ls/media/opensourcelib/toolchainLib/ramfslib
,然后检查库是否存在。 - 检查 LD_LIBRARY_PATH 的路径中是否存在必要的软链接(soft link)。这是执行
ldconfig
的事情之一。也许对于您的libmylib.so.1.5.8
,您会找到链接libmylib.so.1.5
、libmylib.so.1
和libmylib.so
. - 使用
ldd a.out
检查库依赖性。 - 如果您在系统中安装了
strace
(如果没有,我建议您为您的开发板编译它并将其复制到您的开发板),尝试启动它之前导出的LD_LIBRARY_PATH
并验证路径是否已尝试读取(以及许多其他内容)。
希望对您有所帮助。
关于c++ - 在 Iinux 操作系统(自定义板)上运行的应用程序不会从导出的 LD_LIBRARY_PATH 中读取共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48024109/