MinGW的链接参数

由于MinGW是从Linux平台移植过来的,又需要支持与MSVC编译库交叉链接,又有x32/x64、Debug、Release等相互兼容问题,导致其输出格式比较混乱。

一般而言,MSVC生成的动态库扩展名为dll,静态库扩展名为lib。但在很多时候,链接动态库还需要一个相应的lib文件指明链接信息。这个lib文件并没有具体二进制码,只是一个函数名的信息头。

Linux下,GCC链接生成的动态库扩展名为.so,静态库扩展名为.a。对于MinGW来说,已经不区分.dll还是.so了,可以直接链接。

生成动态库
生成.o文件后g++ -shared -o xxx.dll xxx.o 即可
生成附加信息头
g++ -o xxx.dll xxx.c -shared -Wl,–out-implib=libxxx.a
生成静态库
ar rcs -o libxxx.a xxx.o

有时,生成的.a文件不被MSVC识别,此时可以添加-g参数以使其包含debug信息

此外,MinGW还支持-static参数,据说是能够以静态方式加载动态库。我实验了如果是单源文件确实可以切换到对于stdc++标准库的静态链接。但是自己生成的dll即便加了也没用。。。

附:所用测试代码:

main.cpp


class AA
{
public
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值