链接未使用的共享库会不会很糟糕?

时间:2016-03-13 02:15:00

标签: gcc ld

gcc / ld真的会在最终的可执行文件中包含对这些共享库的引用,即使没有对这些函数的引用吗?如果是这样,那么做这样的事情可能会给我带来任何潜在的问题吗?

2 个答案:

答案 0 :(得分:1)

看看这个测试:

如果你有

//file.c
int main(){
   return 1;
}

编译

gcc file.c -lm

然后

$ ldd a.out 
    linux-vdso.so.1 =>  (0x00007fff3ece6000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1898e59000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f1899269000)

没有指向mathlib的链接

您可能遇到的问题是更长的链接时间和意外符号冲突的风险。

答案 1 :(得分:0)

除了@xvan引用的链接时间和可能的符号冲突之外,如果您碰巧构建包(例如RPM),那些额外的链接会导致不必要的依赖关系,从而导致在目标系统上安装额外的包。 / p>

进一步阅读: