我开发了一个共享库B.so,它取决于A.so. 当我使用B.so编写程序test.exe时,但是有一个编译错误,它表示找不到某些符号(符号在A.so中)。 我的构建线:
gcc test.c -o test.exe -fPIC -I./ -L./ -lB
我们是否有一个方法,如何成功构建test.exe,但没有链接A.so。
答案 0 :(得分:1)
如何成功构建test.exe,但没有链接A.so。
至少有两种方法:
导出正确的LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/path/to/A
gcc ... -lB
使用ld
选项-rpath
(由提问者@iceKing自己发现)
gcc -Wl,-rpath=/path/to/A ...
在这两种情况下,ld
都会自动搜索这些库列表所依赖的库。