我给这些命令:
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
+2
您可以使用链接器'-rpath'选项来指定可执行文件搜索库的其他位置,而不是将它们移动。# –
+0
谢谢@gilez'rpath'解决了我的问题。如果您发布ypur评论作为答案,我会接受。 –
+0
我将我的评论扩展为一个答案,但正如我所说,我现在有点困惑。你仍然有问题,还是这一切工作? –