c++ - 在 Iinux 操作系统(自定义板)上运行的应用程序不会从导出的 LD_LIBRARY_PATH 中读取共享库

标签 c++ c linux ld

我正在尝试在 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 可能是什么问题。

最佳答案

我会做以下事情:

  1. 检查路径是否正确。可能是大写或小写字母或任何其他拼写错误。尝试 ls/media/opensourcelib/toolchainLib/ramfslib,然后检查库是否存在。
  2. 检查 LD_LIBRARY_PATH 的路径中是否存在必要的软链接(soft link)。这是执行 ldconfig 的事情之一。也许对于您的 libmylib.so.1.5.8,您会找到链接 libmylib.so.1.5libmylib.so.1libmylib.so.
  3. 使用 ldd a.out 检查库依赖性。
  4. 如果您在系统中安装了strace(如果没有,我建议您为您的开发板编译它并将其复制到您的开发板),尝试启动它之前导出的LD_LIBRARY_PATH 并验证路径是否已尝试读取(以及许多其他内容)。

希望对您有所帮助。

关于c++ - 在 Iinux 操作系统(自定义板)上运行的应用程序不会从导出的 LD_LIBRARY_PATH 中读取共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48024109/

相关文章:

linux - awk命令将十六进制转换为带符号的十进制

c++ - N & (1<<x) == 什么时候为真?

c++ - boost::property_tree 无一异常(exception)

从包含转义字符的 char* 创建 char

c++ - 我们不使用双数组是什么?

c - 在 PIC 上使用 long long 时的舍入问题

java - 如何将独立的 Scala 应用程序转换为可运行的 SOA?

c# - Azure 函数在 Linux 上出现 'Listener unable to start' 错误

c++ - Eclipse C++11 线程支持不起作用

c++ - 使用 cout 缩进段落