使用我的程序分发共享对象

时间:2012-01-06 19:32:42

标签: c++ linker ld

我已经知道我的程序需要哪些.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

我觉得奇怪的是程序无法与库链接,即使它基本上就位于工作目录中。为什么不连接?

1 个答案:

答案 0 :(得分:0)

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