c++ - 过多的链接/库会如何影响编译期间的可执行输出?

标签 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”相当小)?

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

最佳答案

如果您的编译器驱动程序默认将“--as-needed”选项传递给链接器,那么这对生成的二进制文件没有影响,因为链接器将删除不需要的库依赖项。

Debian wiki 对此有一篇详尽的文章:Debian DSO Linking .

关于c++ - 过多的链接/库会如何影响编译期间的可执行输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36957862/

相关文章:

c++ - 在 C++ 模板元编程中检测 void 方法

java项目编译问题

java - Eclipse 不编译 java 文件(已经尝试了可能重复的答案)

c++ - Rust,如何使用 DLL 中的全局变量? C++ 等效项需要 __declspec(dllimport)

c++ - 如何在删除类指针列表时删除段错误

c++ - 使用 friend 关键字和使用成员函数修改类内部的私有(private)变量有什么区别?

c - C 中的分层链接

c++ - 我可以在忽略 Qt 的打包库的同时编译 Qt 应用程序吗?

c++ - 是否可以将 vector 初始化为另一个附加元素的拷贝

c++ - 为什么简单的C++源文件的预处理文件包含数千行代码?