在编译期间,多余的链接/库如何影响可执行输出?

时间:2016-04-30 17:16:32

标签: c++ compilation linker

例如,如果我要链接对象" example.o"与

-L/usr/X11R6/lib -L/usr/local/lib -lGL -lGLU -lm -lglut -lGLEW -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi -ldl -lXcursor -lXinerama

和输出可执行文件一样编译(并且可以感知到的功能)与仅与

链接时一样
-lGL -lm -lglfw3

那么前一个编译的过多链接如何影响最终用户的可执行文件(如果有的话)?加载/运行时间?对于较大的程序(理解" example.o"相当小)?

这个问题可能是我自己的启发,诚然。

1 个答案:

答案 0 :(得分:1)

如果您的编译器驱动程序正在传递" - 根据需要"默认情况下,链接器的选项,然后这将在生成的二进制文件中没有区别,因为链接器将删除不需要的库依赖项。

Debian wiki是关于此的广泛文​​章:Debian DSO Linking