linux - ARM 上的程序找不到共享库,而 ldconfig 找到它

标签 linux arm shared-libraries gstreamer

我已经编译了自己的共享库“libgsttest.so”,并将其放入/usr/lib/test

/usr/lib/test/libgsttest.so

我在/etc/ld.so.conf.d 中添加了一个文件“test.conf”,其中包含一行:

/usr/lib/test

我运行ldconfig。要检查 ldconfig 是否找到该库,我运行:

ldconfig -p | grep test
libgsttest.so (libc6) => /usr/lib/test/libgsttest.so

这个共享库由 gstreamer 插件使用(但我的猜测是这对问题并不重要)。当我启动我的插件时,Linux 抗议:

Could not load plugin file: Opening module failed: libgsttest.so: cannot open shared object file: No such file or directory

有什么想法为什么我的程序找不到我的 .so 而 ldconfig 却找到了它?

编辑:我在带有英特尔处理器的 Opensuse 13.1 上运行完全相同的配置,没有任何问题!

编辑2:有关我的配置的更多详细信息:

  • OpenSuse 13.1 - Intel - 64 位操作系统。
  • qemu 仿真内的 ARM Opensuse 13.1(在上述操作系统上);所以这不是原生的arm操作系统...

编辑 3:我确信该库的格式正确:因为将其放入/usr/lib 并运行 ldconfig 可以修复问题。真正的问题仍然是:为什么我的程序在子目录中找不到它?

最佳答案

我刚刚找到了一个似乎有帮助的解决方法:

我将我的库放在/usr/lib/中并运行 ldconfig --> 一切正常

我从/usr/lib 中删除了我的库 --> 一切正常。

也许 ldconfig 试图变得太聪明;并且没有注意到/usr/lib/test/中的任何更改,因为它之前没有跟踪此文件夹。通过更改/usr/lib/中的某些内容,我可能会迫使他进行真正的刷新?

关于linux - ARM 上的程序找不到共享库,而 ldconfig 找到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21832416/

相关文章:

python - 将带有数组的嵌套 ctypes 结构传递给 C 库函数不符合预期

linux - 如何订购具有特定条件的文本文件?

c - OpenSSL 函数 EVP_EncryptFinal_ex 中的内存泄漏

linux - git可以存储或控制目录用户、组或权限

在保存和检索机制之间拥抱命令的代码

c - 如何交叉编译 ARM 的 libcollections?

c++ - 如何在 gcc 中链接到我自己的库?

c - 嵌入式 ARM 和 C 运行时

c++ - 如何通过 GNU Autotools 链接共享库

android - 无法将依赖项添加到 Android 项目