为什么mingw编译出的helloworld那么大?
答案:3 悬赏:10 手机版
解决时间 2021-11-16 05:39
- 提问者网友:玫瑰园
- 2021-11-15 10:49
为什么mingw编译出的helloworld那么大?
最佳答案
- 五星知识达人网友:骨子里都是戏
- 2021-11-15 11:56
请使用动态链接库,不要用静态的C++库。我不知道你用的mingw是哪个发行版的,但是绝对不是原装的,你可以强制这货使用动态库。一般而言vs和mingw的差距就是30K左右的大小,因为mingw要连接到mingw10基本库和vc是不一样的。追问怎样使用动态连接库?如果使用了动态连接库,移植到别的电脑要安装什么才能运行吗?追答mingw官方2012.04打包版的是直接连接的动态库包括mingw10和libstdc++都是动态的,因此发布的时候要带上mingw10.dll和libstdc++-6.dll
测试发现vc生成的可执行程序为36K,mingw为51K。
至于你的mingw如何连接动态库的话,一般而言可以用-WI,-Bdynamic选项试一下,这是传递给ld的参数,指定ld从动态库开始搜索需要连接的库。追问的确不是原装的,是Code::blocks带的。有什么办法吗?追答查看codeblocks的帮助中关于编译器的文档,然后就是设置项目属性,连接器参数中使用-bdynamic选项。不过这个影响不大,如果动态链接库的话会比这个更大,优化选型做了覆盖筛选,所以才只有400多k。优化编译时静态连接比动态连接运行效率会高一些,当然当某个库用的比较多的时候还是要动态的好,毕竟动态库会被加载到专用空间中。
测试发现vc生成的可执行程序为36K,mingw为51K。
至于你的mingw如何连接动态库的话,一般而言可以用-WI,-Bdynamic选项试一下,这是传递给ld的参数,指定ld从动态库开始搜索需要连接的库。追问的确不是原装的,是Code::blocks带的。有什么办法吗?追答查看codeblocks的帮助中关于编译器的文档,然后就是设置项目属性,连接器参数中使用-bdynamic选项。不过这个影响不大,如果动态链接库的话会比这个更大,优化选型做了覆盖筛选,所以才只有400多k。优化编译时静态连接比动态连接运行效率会高一些,当然当某个库用的比较多的时候还是要动态的好,毕竟动态库会被加载到专用空间中。
全部回答
- 1楼网友:渊鱼
- 2021-11-15 13:19
你编的是DEBUG 还是RELEASE 啊?追问release 还有-O2\-S等参数,IDE为code::blocks
- 2楼网友:洒脱疯子
- 2021-11-15 12:04
编译器选项里加上 -s
如果是图形化设置界面,应该是叫“剥离附加数据”或者什么的。
不过mingw用的C++的库确实是大……
C的话可以编译出来比较小,但是用到了C++的东西就不可避免地囧
如果是图形化设置界面,应该是叫“剥离附加数据”或者什么的。
不过mingw用的C++的库确实是大……
C的话可以编译出来比较小,但是用到了C++的东西就不可避免地囧
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯