MinGW 中如何生成独立于MinGW环境…

在mingw环境中,如果单纯通过[gcc|g++|gfortran] src -o exe 的形式生成可执行文件的话,该文件是需要mingw环境中的libgcc和libstdc++ 等dll文件的。正是因为把这些公用文件都剔除了,所以生成的可执行文件非常的小。但是如果我们想让可执行文件随处可以执行,不需要dll文件的支持的话该怎么办呢?很简单,把这些dll文件静态化。


对于C++ 文件需要这种形式:

g++ -static-libgcc -static-libstdc++ -o $(FileDir)\$(FileNameNoExt) $(FilePath)

注意,是两个dll文件。需要补充说明的是,链接上第一个libgcc可执行文件体积变化不大。但是在链接上第二个文件体积增大1250k左右。加入 -s 选项,就会体积减小


对于C文件 需要:

gcc -static-libgcc -o $(FileDir)\$(FileNameNoExt) $(FilePath)

注意,即使此时用 g++ 并带上-static-libstdc++ 它也不会链接libstdc++这个库,因为并不需要。 gcc只有在需要的时候才链接。


对于Fortran文件 :

gcc -static-libgcc -static-libgfortran -o $(FileDir)\$(FileNameNoExt)  $(FilePath) 


Alternative

后面加-static 选项即可。即:

g++ -static -o $(FileDir)\$(FileNameNoExt) $(FilePath)

gcc -static -o $(FileDir)\$(FileNameNoExt) $(FilePath)

gfortran -static -o $(FileDir)\$(FileNameNoExt) $(FilePath)


Final

考虑到链接库时,是需要就连接,不需要不连接的原则。上面3条可以统一为:

gcc -static -o $(FileDir)\$(FileNameNoExt) $(FilePath) -lstdc++ -lgfortran


<script type="text/javascript" id="wumiiRelatedItems"> </script>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值