我嘗試使用這個庫無法打開共享對象文件:沒有這樣的文件或目錄的錯誤,而有文件
我遵循這個網站創建共享庫和編譯我的main.c
:http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
我給這些命令:
gcc -fPIC -c *.c
gcc -shared -Wl,-rpath,/opt/lib -Wl,-soname,libctest.so.1 -o libctest.so.1.0 *.o
sudo mv libctest.so.1.0 /opt/lib
sudo ln -sf /opt/lib/libctest.so.1.0 /opt/lib/libctest.so
sudo ln -sf /opt/lib/libctest.so.1.0 /opt/lib/libctest.so.1
gcc -Wall -L/opt/lib main.c -lctest -o prog
命令沒有給出錯誤。當我執行的二進制文件./prog
它給./prog: error while loading shared libraries: libctest.so.1: cannot open shared object file: No such file or directory
但libctest.so.1
是/opt/lib
lrwxrwxrwx 1 root root 24 Aug 18 17:06 libctest.so -> /opt/lib/libctest.so.1.0
lrwxrwxrwx 1 root root 24 Aug 18 17:06 libctest.so.1 -> /opt/lib/libctest.so.1.0
-rwxr-xr-x 1 user user 7064 Aug 18 17:05 libctest.so.1.0
而且ldd prog
是
linux-vdso.so.1 (0x00007ffe0f559000)
libctest.so.1 => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcd27fc6000)
/lib64/ld-linux-x86-64.so.2 (0x00007fcd28371000)
這樣有什麼不好?
我用debian 8.5
和gcc 4.9.2
您可以使用鏈接器'-rpath'選項來指定可執行文件搜索庫的其他位置,而不是將它們移動。# – gilez
謝謝@gilez'rpath'解決了我的問題。如果您發佈ypur評論作爲答案,我會接受。 – user4757345
我將我的評論擴展爲一個答案,但正如我所說,我現在有點困惑。你仍然有問題,還是這一切工作? – gilez