众所周知,Gcc编译的原始程序一般很大,其实有几种方法能大大减小目标代码的体积,一般有以下几种方法。

基本知识来源:http://www.mingw.org/wiki/Large_executables

1、禁用调试信息

Release编译时不要加上-g开关。

2、使用-Os编译程序。

不要使用-funroll-loops等可以加速程序执行但是会大大增加目标代码体积的开关。

3、编译后的程序使用strip去除符号和偏移(限于可执行程序和共享库,其他易出问题)。

4、如果你不需要RTTI,编译时加入-fno-rtti。

5、如果你不需要处理C++异常,编译时加入-fno-exceptions。

6、使用UPX之类的可执行程序压缩程序(只推荐用于可执行程序,用于其他也可,但是较浪费内存)。

例如,使用wxWidgets动态编译的程序初始体积可能有429KB,经过以上方式(未经UPX压缩)处理后,体积减少为108KB,UPX压缩后体积为35KB。

7、gcc参数-Wl,–gc-sections,不链接未用函数,减小可执行文件大小

详细参考:https://blog.csdn.net/whatday/article/details/104053124

linux gcc 静态编译 减小体积相关推荐

  1. linux gcc 静态编译,GCC 程序编译的静态链接和动态链接

    (给Linux爱好者加星标,提升Linux技能)转自:Mr_Bluyee 在链接阶段中,所有对应于源文件的 .o 文件.'-l' 选项指定的库文件.无法识别的文件名(包括指定的.o目标文件和.a库文件 ...

  2. Linux下静态编译的一个TIP

    Linux下静态编译的一个TIP | 素包子 Linux下静态编译的一个TIP 2010年3月28日 baoz 阅读评论 linux下静态编译好处很多,一来是可以跨发行版(debian redhat ...

  3. linux gcc 静态 动态链接库

    linux gcc 静态 动态链接库 静态链接库 首先生成依赖函数的目标文件 gcc -c source1.c source2.c; 然后归档目标文件到静态库 ar -rcs libYourID.a ...

  4. linux gcc g++编译命令选项

    gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码) ...

  5. linux 驱动编译静态,Linux驱动静态编译和动态编译方法详解

    内核源码树的目录下都有两个文档Kconfig和Makefile.分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文档相关的内核配置菜单.在内核配置m ...

  6. linux的静态编译elf无法调试,[翻译]自己动手编写一个Linux调试器系列之4 ELF文件格式与DWARF调试格式 by lantie@15PB...

    自己动手编写一个Linux调试器系列之4 ELF文件格式与DWARF调试格式 by lantie@15PB 在上一节中,你已经听说了DWARF调试格式,它是程序的调试信息,是一种可以更好理解源码的方式 ...

  7. linux的静态编译elf无法调试,macos-运行arm-elf-gcc编译代码时出现段错误

    使用MacPorts,我刚刚在我的MacBook Pro上安装了arm-elf-gcc.这项工作完美无缺,并且一切运行正常. 但是,在用C和C编译了一个简单的hello world测试程序并尝试在目标 ...

  8. linux pcre静态编译,Linux下,Nginx部署静态网站

    1.准备工作 选首先安装这几个软件:GCC,PCRE(Perl Compatible Regular Expression),zlib,OpenSSL. Nginx是C写的,需要用GCC编译:Ngin ...

  9. linux gcc出错,编译arm-linux-gcc出错

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在ubuntu12.04下编译arm的交叉编译工具链 执行../gcc-4.6.0/configure --target=$TARGET --prefix ...

最新文章

  1. Oracle 10g Toad查看 表空间 报错 ORA-00600 internal error code arguments [ktfbhget-4], [6], [5]...
  2. 大话数据结构-栈与队列
  3. python-json
  4. ndarray python 映射_在Matlab的delsq演示中,用numpy方法对向量映射进行ndarray处理?...
  5. php flash上传进度条,PHP_PHP+FLASH实现上传文件进度条相关文件 下载,PHP之所以很难实现上传进度条 - phpStudy...
  6. java中paint方法和paintComponent方法的不同
  7. 管理员信息模块php,管理员模块功能代码
  8. magento 模块重写
  9. windows下cmd中命令操作
  10. 【JAVA实例】代码生成器的原理讲解以及实际使用
  11. LNMP环境部署----之Mysql安装部署
  12. select清除原来样式
  13. java 1.7 环境变量_安装JDK1.8之后又安装1.7出现的环境变量问题
  14. Shell脚本 – 查看网络接口信息
  15. 四二拍用音符怎么表示_2020圣诞平安夜怎么发朋友圈?朋友圈关于平安夜经典语录精选...
  16. sqlserver 登录失败——孤立用户
  17. 阿里云云计算 32 PolarDB的概念
  18. <算法导论>练习4.3
  19. Zemax学习笔记(4)- 设计单透镜实例_1,设置
  20. css3 360度旋转

热门文章

  1. Kubernetes — 网络流量模型
  2. 5G 信令流程 — UE 寻呼(Paging)流程
  3. Go 语言编程 — Overview
  4. Web 开发规范 — WSGI
  5. 简洁高效的linux kfifo环形缓冲区
  6. Netty+SpringBoot+FastDFS+Html5实现聊天App
  7. 腾讯云+未来高峰对话:智能+时代的创新与探索
  8. Eslint中no-undef的检查报错
  9. 抓信插件开发遇到网页的CSS不起作用
  10. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十二)