Sal*_*gar 4 c c++ linker static-linking
假设我有一个名为库的库libfoo,其中包含一个类,一些静态变量,可能是"C"链接,还有一些其他函数.
现在我有一个主程序,看起来像这样:
int main() {
return 5+5;
}
Run Code Online (Sandbox Code Playgroud)
当我编译并链接这个时,我链接反对libfoo.
这会有什么影响吗?我的可执行文件会增加吗?如果是这样,为什么?静态变量或其地址是否被复制到我的可执行文件中?
如果对此有类似的问题,或者我以任何方式特别愚蠢,请道歉.
它不会在现代链接器中执行任何操作,因为它知道可执行文件实际上并不使用libfoo的符号.在我的系统上使用gcc 4.4.1和ld 2.20:
g++ linker_test.cpp -static -liberty -lm -lz -lXp -lXpm -o linker_test_unnecessary
g++ linker_test.cpp -static -o linker_test_none
ls -l linker_test_unnecessary linker_test_none
Run Code Online (Sandbox Code Playgroud)
它们都是626094字节.请注意,这也适用于动态链接,尽管它们的大小都要低得多.
| 归档时间: |
|
| 查看次数: |
491 次 |
| 最近记录: |