gcc91编译体积太大
㈠ gcc 编译生成外部调试语法文件
你用的是linux系统吧? binutil包里面有个objcpy命令:
obj --only-keep-debug [被提取的文件] [提取出来的调试符号文件,建议加.debug后缀]
另外要把调试信息去掉是用strip命令。你可以man下看看。
strip --strip-debug [需要处理的文件]
把debug信息加回去:
obj --add-gnu-debuglink=[debug文件] [需要添加debug信息的文件]
㈡ 为什么自己编译的 aria2 体积很大
有两种情况,在Debug编译模式下往往同时存在:
1、未打开编译、链接优化,生成冗余代码、数据较多。
2、编译时包含调试信息,最终影响可执行文件体积。
还有第三种情况,受所编译的项目配置选项影响:
3、使用了体积较大的静态链接库,有些库体积几十甚至几百兆(通常Debug版),一旦引入很可能大大增加可执行文件尺寸(未开链接优化时尤甚)。
㈢ GCC中静态连接和动态连接的区别
1:静态连接的时候,静态库的所有执行代码被直接编译到目标程序中。而动态连接的时候,仅仅把动态库的函数和变量的符号名,地址偏移量等导入到目标程序。只有在目标程序运行的时候才把动态库的执行代码加载到内存中。
2:动态链接的项目容易管理,把不同模块封装成不同的动态库,如果模块功能修改,一般只需要重新生成该动态库,不用重新编译其他模块和目标程序。而静态链接的程序修改任何一个地方都必须重新编译整个程序
3:静态链接生成的目标程序体积比动态链接的大,但是加载速度更快,发布更容易,不需要检查发布机器上是否有该动态库或者动态库版本是否符合要求。
4:如果多个程序使用一个动态库,则该库的执行代码只会在内存中加载一次。而静态库是多次加载(事实上静态库连接完就没用了,等于目标程序的一部分)。
5:从调试的角度来说,静态连接的程序调试方法和独立程序没有任何区别,而动态库的调试相对要复杂一些,因为库里面的符号地址都是相对地址。
㈣ C++编译后的文件为什么体积特大
正常,在编写小的短的程序C没有汇编有优势,一个程序很简单的程序用TC编译成30K正常
你可以这样理解
编译 就跟模板似的,有固定的开头结尾,中间是你的程序编译的代码,开头结尾最简单也要几K,所以再加上你的程序不可能很短
你是用的TC 而不是用的VC++ 没有动态库与静态库的问题,
但是如果改变些TC编译选项可能对编译结果大小有影响
㈤ c# winform中编译后,exe文件体积很大怎么办
一般EXE文件很大,说明你有以下几个事情都放在EXE项目中了:
1、大量的程序图片以资源的形式签入到了exe项目中。
2、大量的业务逻辑代码放到了exe项目中。
3、大量的业务逻辑窗口代码放到了exe项目中。
解决的办法:
1、建立多个类库项目,将主要的代码放到类库项目中。
2、为图片专门创建外部资源文件,或者嵌入到类库项目中。
3、exe项目尽量不做业务处理,只运行类库项目中的一些代码。
这样就可以大大减少exe的大小,将主要代码放到了类库项目生成的dll文件中。
㈥ 为什么vs2015做MFC,静态编译体积这么大
打开项目,选择属性,分三步:(1)选择左上角的configuration->Active(Debug)configurationproperties->general->useofMFC,选择useMFCinastaticlibrary。(2)左上角configuration->debugC/C++->codegeneration->runtimelibrary->multi-threadeddebug(/MTd)(3)configuration->releaseC/C++->codegeneration->runtimelibrary->multi-threaded(/MT)
㈦ 如何减小gcc静态生成的程序的体积
把图象做在新建的MC中,把图象缩小为25%,然后回到场景中,将MC放大400%(对复杂的图象效果显着)
㈧ GCC编译,怎样禁止优化某一段语句或者改成汇
实际上在编译之后还要链接,才能生成最终的目标代码。 在链接的过程中,只有用到的函数才会被链接进目标代码。也就是说,没有用到的函数不会被链接到目标代码,也不会增大目标代码的体积。
㈨ 如何在Windows下安装使用gcc编译器
1、 先去Cygwin网站下载一个安装文件(setup.exe),这个文件体积很小,只有不到300KB。然后双击运行setup.exe。因为是第一次安装,所以必须选择从Internet在线安装,也可以先从Internet下载安装文件,然后再手动安装。我选择后者,因为这样,以后我可以在不联网的时候也能安装。
2、接下来点击“下一步”,然后从一系列服务器列表中选择一个你认为网速最快的一个作为下载服务器。接着点击“下一步”就会出现如下图所示的界面,用来选择你想安装的程序。
如果你不做任何修改,将默认安装Cygwin运行所需的最少的程序和组件。不过,gcc编译器不在默认安装程序之列,所以你必须选择安装gcc。具体是, 在上述窗口中的列表中展开Devel目录,找到gcc-g++一项,点击“Default”,它就变成了“Install”,同时由于程序之间的依赖性 gcc-core条目的“Default”,也变成了“Install”。
此外,为了使gcc能正确编译源文件,还必须安装win32api库,否则会编译出错。因此,你需要在上述窗口中展开Libs目录,找到win32api一项,将它点成“Install”。
3. 接下来就是耐心等待程序去下载所需的安装文件了。一旦下载完毕,你再次运行setup.exe,先选择你将要把Cygwin安装在什么地方,然后再选择你 刚才所下载的那些安装文件所在的硬盘位置。接着你还需要再次选择安装gcc和win32api。这样,你就可以开始安装了。
4. 安装完成后,运行Cygwin。在窗口中敲入gcc就可以直接用gcc来编译了。编译链接生成的可执行文件,系统会自动加上.exe后缀,在Cygwin 环境中可以直接运行。但如果脱离Cygwin环境,而在MS DOS下运行,则会出错。解决办法很简单,那就是将cygwin1.dll文件拷贝到C:\WINDOWS目录下即可。