[英]Distributing shared objects with my program
我已經確定我的程序需要哪些.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
進行確認。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.