相关疑难解决方法(0)

Ubuntu 在哪里寻找共享库?

当我运行一个在运行时链接到共享库的进程(在进程启动时链接,稍后不与 链接dlload())时,.so除了LD_LIBRARY_PATH?

背景:

我编写了一些使用特定第三方库的 C++ 代码。我已经在两个不同的平台上安装了这个库并编译了我的代码,都是 Ubuntu 但不同的版本,以及不同版本的 gcc。该库是从源代码编译和安装的,位于/usr/local/lib两个平台上。当我编译我的代码时,我链接了pkg-config --libs第三方库的参数,并且我已经验证pkg-config --libs在两个平台上返回完全相同的内容。

我的代码在两个平台上都成功编译,并且在两个平台上都LD_LIBRARY_PATH没有定义(或定义为空"":)。但是,当我在一个平台上运行它时它工作正常,而在另一个平台上我收到此错误:

error while loading shared libraries: libthrift-0.9.0.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

有趣的是,那那些没有工作,是的Ubuntu和gcc版本。:/

所以我试图弄清楚工作人员如何能够找到图书馆,以便我可以让坏的人以同样的方式找到图书馆。(即,没有设置LD_LIBRARY_PATH

更新:

这是我的输出 cat /etc/ld.so.conf.d/*

...在工作(旧)系统上:

/usr/lib/mesa
/usr/lib32/mesa
/usr/lib/alsa-lib
# libc default configuration
/usr/local/lib
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
Run Code Online (Sandbox Code Playgroud)

...在损坏的(较新的)系统上:

# libc default configuration
/usr/local/lib
# Multiarch support
/lib/x86_64-linux-gnu …
Run Code Online (Sandbox Code Playgroud)

shared-library libraries dynamic-linking

33
推荐指数
2
解决办法
7万
查看次数