c++ - C 和 C++ 静态链接 : just a copy?

标签 c++ c linker static-linking

当有人静态链接一个 .lib 时,链接器会将 lib 的全部内容复制到最终的可执行文件中还是只复制目标文件中使用的函数?

最佳答案

  • 整个图书馆? -- 没有。
  • 只是你调用的函数? -- 没有。
  • 还有别的吗? -- 是的。

它肯定不会扔到整个库中。

但它也不一定只包括“目标文件中使用的函数”。

链接器将创建一个递归构建的列表,列出库中的哪些对象模块满足您的 undefined symbol 。

然后,它将包含这些对象模块中的每一个。

通常,一个给定的对象模块将包含多个函数,如果其中一些没有被您调用的函数调用,您将获得一些函数(和数据对象) ) 你不需要的。

关于c++ - C 和 C++ 静态链接 : just a copy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5332609/

相关文章:

c# - 带有 glew C++/CLI 的 OpenGL 3.0+

c - 位移位和整数提升?

c++ - 在包含 char 字符串的对象上使用析构函数时出现断点异常

c - C 中的 TCP 套接字编程

c - 从 'uint8_t* {aka unsigned char*}' 到 'const char*' [-fpermissive] 的无效转换

java - 将可执行文件链接到代码块

c - 在 ROS 包中链接外部头文件

python - Boost python 构建的共享库不包含任何函数

c++ - 如何使用 Boost(Lambda?)使 std::sort() 更容易?

c++ - 对类模板签名的条件检查(例如 HashSet + HashMap)