C++静态链接
C++静态链接
MSVC
CMakeLists.txt
| |
MinGW
默认情况下需要三个库:
libgcc_s_seh-1.dlllibstdc++-6.dlllibwinpthread-1.dll
前两个库只需要使用 -static-libgcc 和 -static-libstdc++ 这两个选项
第三个库由于其特殊性,需要-Wl,-Bstatic,--whole-archive -lwinpthread
| |
Note
-Wl,: 将后面的选项传递给链接器(ld)-Bstatic: 强制使用静态链接(而非动态链接)--whole-archive: 包含整个静态库的所有对象文件,即使某些符号未被引用
winpthread 的特殊性在于它使用了大量隐式初始化机制(构造函数、TLS 回调、静态初始化),这些代码没有被用户代码直接调用,但运行时必须存在,因此需要强制链接整个库。
最后更新于