我尝试使用带静态链接的MinGW构建示例MathGL项目。 我已经将Zlib和PNGlib构建为静态库(默认情况下我认为Zlib是静态的,并且从PNGlib makefile中删除了#adco-install'规则)并在我的C:/ mingw32中获得了libz.a和libpng.a文件/ lib中。
MathGL提供了CMAKE文件,找不到这些库,所以我用ZLIB_LIBRARY =运行cmake等等,成功构建了它。
结果,我有3个文件:
编译示例:g++ main.cpp -IC:/mingw32/include -LC:/mingw32/lib -lmgl
它可以工作,但需要所有mingw .dll和libmgl.dll
如果我使用-static
提供上一个命令,我会收到错误:
$ g++ main.cpp -IC:/mingw32/include -static -LC:/mingw32/lib -lmgl
C:\Users\stjfk\AppData\Local\Temp\ccyoT7RU.o:main.cpp:(.text$_ZN8mglGraphC1Eiii[__ZN8mglGraphC1Eiii]+0xa): undefined reference to `_imp___ZTV8mglGraph'
C:\Users\stjfk\AppData\Local\Temp\ccyoT7RU.o:main.cpp:(.text$_ZN8mglGraphC1Eiii[__ZN8mglGraphC1Eiii]+0x2f): undefined reference to `_imp__mgl_create_graph_gl'
C:\Users\stjfk\AppData\Local\Temp\ccyoT7RU.o:main.cpp(.text$_ZN8mglGraphC1Eiii[__ZN8mglGraphC1Eiii]+0x4d): undefined reference to `_imp__mgl_create_graph'
C:\Users\stjfk\AppData\Local\Temp\ccyoT7RU.o:main.cpp:(.text$_ZN8mglGraphD1Ev[__ZN8mglGraphD1Ev]+0xa): undefined reference to `_imp___ZTV8mglGraph'
C:\Users\stjfk\AppData\Local\Temp\ccyoT7RU.o:main.cpp:(.text$_ZN8mglGraphD1Ev[__ZN8mglGraphD1Ev]+0x28): undefined reference to `_imp__mgl_use_graph'
...
collect2.exe: error: ld returned 1 exit status
为什么我无法将所有库链接到静态? .a文件是否意味着静态库?