当有人静态链接一个 .lib 时,链接器会将 lib 的全部内容复制到最终的可执行文件中还是只复制目标文件中使用的函数?
最佳答案
- 整个图书馆? -- 没有。
- 只是你调用的函数? -- 没有。
- 还有别的吗? -- 是的。
它肯定不会扔到整个库中。
但它也不一定只包括“目标文件中使用的函数”。
链接器将创建一个递归构建的列表,列出库中的哪些对象模块满足您的 undefined symbol 。
然后,它将包含这些对象模块中的每一个。
通常,一个给定的对象模块将包含多个函数,如果其中一些没有被您做调用的函数调用,您将获得一些函数(和数据对象) ) 你不需要的。
关于c++ - C 和 C++ 静态链接 : just a copy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5332609/