关于在Linux中使用.so进行编译

时间:2014-04-24 14:02:47

标签: c linux shared-libraries .a

我开发了一个共享库B.so,它取决于A.so. 当我使用B.so编写程序test.exe时,但是有一个编译错误,它表示找不到某些符号(符号在A.so中)。 我的构建线:

gcc test.c -o test.exe -fPIC -I./ -L./ -lB

我们是否有一个方法,如何成功构建test.exe,但没有链接A.so。

1 个答案:

答案 0 :(得分:1)

  

如何成功构建test.exe,但没有链接A.so。

至少有两种方法:

  1. 导出正确的LD_LIBRARY_PATH

    export LD_LIBRARY_PATH=/path/to/A
    gcc ... -lB
    
  2. 使用ld选项-rpath(由提问者@iceKing自己发现)

    gcc -Wl,-rpath=/path/to/A ...
    
  3. 在这两种情况下,ld都会自动搜索这些库列表所依赖的库。