先说现象,我在本机编译了一个A.so 而这个A.so依赖B.so(我的B.so放在/usr/local/lib下) 然后我在本机使用是没有问题的。
接下来我把A.so 和 B.so都拷给别人用(B.so同样在/usr/local/lib下),问题来了,他在用的时候提示:
B.so:cannot open shared object file: No such file or directory
ldd A.so
B.so => not found
明明B.so在/usr/local/lib下却找不到
我的解决方法是将B.so cp到当前目录下 修改A的Makefile文件
-L${shell pwd}/ -lB -Wl,-rpath='$$ORIGIN/'
-L指定B的路径 -lB只 连接libB.so -Wl指使用后面的路径
重新编一个A.so给他人 就可以了
为什么这样就解决了 还不是很清楚,有时间慢慢研究下,下班~~~