与我的程序一起分发共享对象

Distributing shared objects with my program

本文关键字:共享 对象 一起 我的 程序      更新时间:2023-10-16

我已经弄清楚我的程序在其他机器上工作需要哪些.so文件,但我不确定我需要对它们做些什么,以确保我的程序能够在执行时找到它们并与它们链接。

我知道在Windows平台上,我可以将.dll文件转储到可执行文件的目录中,然后就可以完成了。但在Linux上似乎不是这样。

$ ls
libjrtp.so.3.9.1  libjthread.so.1.3.1  libQtCore.so.4  libQtGui.so.4  streamer
$ ./streamer 
./streamer: error while loading shared libraries: libjrtp.so.3.9.1: cannot open shared object file: No such file or directory

我觉得奇怪的是,程序不能与库链接,即使它基本上就在工作目录中。为什么它没有链接?

它可能没有链接,因为.不在二进制文件的RPATH中(您可以使用-R来设置它)。Unix系统不会像Windows那样在当前目录中查找所需的文件。你可以用ldd ./binary来确认这一点。