【发布时间】:2010-02-07 03:53:47
【问题描述】:
考虑以下示例
g++ a.o b.o c.o -o prog
如果c.o 没有向prog 贡献任何可执行代码,并且在任何其他文件中也没有对c.o 的任何依赖,那么GCC 是否还会将c.o 的内容包含在prog?
换句话说,除了编译时间之外,将不必要的文件编译成可执行文件会产生什么(如果有的话)负面后果?
提前致谢;干杯!
【问题讨论】:
-
您可以尝试使用和不使用额外库进行链接,看看可执行文件的大小是否相同。
-
我不了解 GCC,但无论您是否引用它们,MSVC 都会包含所有 .obj 文件的内容,但它只会包含您引用的 .lib 文件的部分。我希望 GCC 也一样
-
所描述的步骤通常称为“链接”。术语“编译”通常用于描述目标文件的生成。
标签: c++ gcc linker compilation