gcc链接,去掉不用的函数和data
编译代码的时候,没有用到的函数经常会被编译,该怎么才能去掉呢?
解决方法:
CFLAGS 加上 -ffunction-sections -fdata-sections
LDFLAGS 加上 --gc-sections
原理如下:
-function-sections的意思是,将不同函数编译到不同的section上面。如果没有这个选项,所有的函数都会编译到一个section上面,于是函数就不能被“剥离”。
-fdata-sections同理。
--gc-sections 表示把不要的函数section去掉
gcc链接,去掉不用的函数和data的更多相关文章
- GCC链接库的一个坑:动态库存在却提示未定义动态库的函数
		背景 在GCC中已经指定链接库,然而编译时却提示动态库函数未定义! 测试出现的错误提示如下: [GMPY@13:48 tmp]$gcc -o test -L. -lmylib test.c /tmp/ ... 
- Qt Windows下链接子系统与入口函数(终结版)(可同时存在main和WinMain函数)
		Qt Windows下链接子系统与入口函数(终结版) 转载自:http://blog.csdn.net/dbzhang800/article/details/6358996 能力所限,本讨论仅局限于M ... 
- 使用gcc的-finstrument-functions选项进行函数跟踪【转】
		转自:http://blog.csdn.net/jasonchen_gbd/article/details/44044899 版权声明:本文为博主原创文章,转载请附上原博链接. GCC Functio ... 
- Linux gcc链接动态库出错:LIBRARY_PATH和LD_LIBRARY_PATH的区别
		昨天在自己的CentOs7.1上写makefile的时候,发现在一个C程序在编译并链接一个已生成好的lib动态库的时候出错.链接命令大概是这样的: [root@typecodes tcpmsg]# g ... 
- gcc链接g++编译生成的静态库和动态库的makefile示例
		使用c++开发程序或者库时,将库提供给其他人使用. 然而使用者是使用c开发的程序,链接g++编译生成的库时,于链接gcc生成的库,有所不同. 首先是静态库,以链接g++编译生成的libmylib.a为 ... 
- DLL中类的显式链接(用虚函数进行显式链接)
		DLL的显式链接在某些时候比隐式链接具有更大的灵活性.比如,如果在运行时发现DLL无法找到,程序可以显示一个错误信息并能继续运行.当你想为你的程序提供插件服务时,显式链接也很有用处. 显式链接到全局C ... 
- ELF文件之四——使用链接脚本-2个函数-data
		main.c ; int main() { ; } int add() { ; } main.o 反汇编可以看到多了.text节的反汇编,存储的是全局变量的初始化数值 main.o对比,text段后面 ... 
- GCC链接的几个注意点
		库文件依赖顺序 GCC在链接时对依赖库的顺序是敏感的,被依赖的库必须放在后面,比如liba.a依赖libb.a,必须写成liba.a libb.a,否则链接将出错.在库比较多依赖关系比较复杂或者相互依 ... 
- ELF文件之八——使用链接脚本-2个函数-data-bss-temp-call-debug信息
		gcc编译选项可以设置生成调试信息, debug信息格式有stabs,coff,xcoff,dwarf. 常用的有两种格式,stab和dwarf,stab较早,dwarf较新.两种格式介绍:https ... 
随机推荐
- tcp.go
			) _, err := io.ReadFull(clientConn, buf) if err != nil { p.ctx.nsqd.logf("ERROR ... 
- 【线段树】Bzoj1798 [AHOI2009] 维护序列
			Description 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成. 有长为N的数列,不妨设为a1,a2,…,aN .有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2 ... 
- linux 文本编辑 软件管理
			gerp 命令 : grep是强大的文本搜索工具,它对文本文件逐行查看,如果找到匹配的模式,就会打印出包含此模式的所有行,并且grep支持正则表达式 1 grep 选项 模式 被查找文件 : gre ... 
- 《HelloGitHub》第 26 期
			公告 五月初 hellogithub.com 网站做了优化和试错.因为我个人能力原因,导致这段时间网站出现了间断性不能访问,现在问题已经修复.多谢大家的支持.理解和反馈. 本期新增了"星图& ... 
- koa+mysql+vue+socket.io全栈开发之web api篇
			目标是建立一个 web QQ的项目,使用的技术栈如下: 后端是基于koa2 的 web api 服务层,提供curd操作的http接口,登录验证使用的是 json web token,跨域方案使用的是 ... 
- 国际知名CSS Reset 总结
			NO.01 CSS Tools: Reset CSS 网站:https://meyerweb.com/eric/tools/css/reset/ 优点:老牌,用的人多. /* http://mey ... 
- Python创建微信机器人
			微信,一个日活10亿的超级app,不仅在国内社交独领风骚,在国外社交也同样占有一席之地,今天我们要将便是如何用Python来生成一个微信机器人,突然想起鲁迅先生曾经说过的一句话:因为是微信机器人系列的 ... 
- Word页眉、页码的使用:利用分隔符设置指定页显示页眉,解决页码显示{PAGE \* MERGEFORMAT}问题
			不常编辑对文档有格式要求的朋友来说,偶尔需要编辑指定格式页眉页码的word文档时,会一时不记得如何使用,在网上搜索半天,异常烦躁. 特整理一下,记录下来,备不时只需. 以下操作环境为word2016. ... 
- DevOps实践之一:基于Docker构建企业Jenkins CI平台
			基于Docker构建企业Jenkins CI平台 一.什么是CI 持续集成(Continuous integration)是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ... 
- PHP 中move_uploaded_file 上传中文文件名失败
			项目需要上传文件名保持不变,发现上传中文失败:错误如下: move_uploaded_file(public/upload/files//-/\开密二次开发.rar): failed to open ... 
