GCC编译出来的文件过大,如何瘦身?

简介: 过大第一个原因是包含了符号表,这个可以通过strip删除,文件大小会立即缩水。strip命令提供了不同参数,方便可选择的删除。 除此之外,两个编译参数“-ffunction-sections”和“-fdata-sections”,以及链接参数“-Wl,--gc-sections”可用来删除没有使用到的符号,“-Wl,”表示后面是传递给链接器ld的参数。
过大第一个原因是包含了符号表,这个可以通过strip删除,文件大小会立即缩水。strip命令提供了不同参数,方便可选择的删除。
除此之外,两个编译参数“-ffunction-sections”和“-fdata-sections”,以及链接参数“-Wl,--gc-sections”可用来删除没有使用到的符号,“-Wl,”表示后面是传递给链接器ld的参数。
objcopy也可用来删除一些未用的数据。


相关的:
-Wl,--version-script=export.lds
__attribute__ ((visibility ("hidden")))
readelf -s
readelf -S


gcc屏蔽“unused warn”,使用“__attribute__((unused))”,如:
static int __attribute__((unused)) my_function();
注意应用在函数声明,而不是定义处,如果有声明的话。
相关文章
|
4月前
|
NoSQL 编译器 开发工具
006.gcc编译器
gcc是什么?
47 0
006.gcc编译器
|
5月前
|
存储 NoSQL 算法
从一个crash问题展开,探索gcc编译优化细节
问题分析的过程也正是技术成长之路,本文以一个gcc编译优化引发的crash为切入点,逐步展开对编译器优化细节的探索之路,在分析过程中打开了新世界的大门……
439 1
|
3天前
|
C语言
gcc的简易用法
【5月更文挑战第10天】gcc的简易用法。
15 8
|
28天前
|
C语言
转载 - gcc/ld 动态连接库和静态连接库使用方法
本文介绍了如何在GCC中实现部分程序静态链接、部分动态链接。使用`-Wl`标志传递链接器参数,`-Bstatic`强制链接静态库,`-Bdynamic`强制链接动态库。
39 0
|
2月前
|
编译器 C语言 C++
列举gcc 常见和有用的编译警告选项
列举gcc 常见和有用的编译警告选项
14 0
|
2月前
|
编译器 C语言
gcc编译警告:warning: suggest parentheses around assignment used as truth value
gcc编译警告:warning: suggest parentheses around assignment used as truth value
28 0
|
2月前
|
编译器 Linux C语言
gcc编译器的使用方法
gcc编译器的使用方法
23 1
|
3月前
|
编译器 C语言
gcc/g++语法
gcc/g++语法
|
5月前
|
C语言
gcc静态编译/usr/bin/ld: cannot find -lc
gcc静态编译/usr/bin/ld: cannot find -lc
|
6月前
|
编译器 程序员 C语言
gcc的编译过程和gcc与g++的区别
gcc的编译过程和gcc与g++的区别
55 0