如何ios减小.a文件体积gcc静态生成的程序的体积

Linux 基础(25)
&&&&&& 代码优化指的是编译器通过分析源代码,找出其中尚未达到最优的部分,然后对其重新进行组合,目的是改善程序的执行性能。
&&&& GCC提供的代码优化功能非常强大,它通过编译选项-On来控制优化代码的生成,其中n是一个代表优化级别的整数。
&&&& 对于不同版本的GCC来讲,n的取值范围及其对应的优化效果可能并不完全相同,比较典型的范围是从0变化到2或3。
&&&& 编译时使用选项-O可以告诉GCC同时减小代码的长度和执行时间,其效果等价于-O1。通常来说,数字越大优化的等级越高,同时也就意味着程序的运行速度越快。
许多Linux程序员都喜欢使用-O2选项,因为它在优化长度、编译时间和代码大小之间,取得了一个比较理想的平衡点。
-O1& ///– 多优化一些.除了涉及空间和速度交换的优化选项,
-O2/O3& ///执行几乎所有的优化工作.
-On& //– 优化的更多.
&gcc代码优化方法
&&&&&& – gcc -Wall optimize.c -o optimize
&&&&& – gcc -Wall -O optimize.c -o optimize
– 借助Linux提供的time命令,可以大致统计出该程序在运行
时所需要的时间,比较两次时间
– # time ./optimize
避免gcc代码优化的场合
避免优化代码场合:
1– 程序开发的时候 优化等级越高,消耗在编译上的时间就越长,因此在开发的时候最好不要使用优化选项,只有到软件
发行或开发结束的时候,才考虑对最终生成的代码进行优化。
2– 资源受限的时候 一些优化选项会增加可执行代码的体积,如果程序在运行时能够申请到的内存资源非常紧张(如一些
实时嵌入式设备),那就不要对代码进行优化,因为由这带来的负面影响可能会产生非常严重的后果。
3– 跟踪调试的时候 在对代码进行优化的时候,某些代码可能会被删除或改写,或者为了取得更佳的性能而进行重组,从
而使跟踪和调试变得异常困难。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:154565次
积分:4437
积分:4437
排名:第5329名
原创:241篇
转载:21篇
评论:25条
阅读:7421
文章:39篇
阅读:23081
文章:70篇
阅读:43523
文章:13篇
阅读:6904
时间不会因为你的迷茫而停留;
生活不会因为你的惆怅而改变;
即使此刻:
不知有多少人仍在不停的翻动着书页......> gcc 生成.o文件解决方案
gcc 生成.o文件解决方案
mzzbank & &
发布时间: & &
浏览:19 & &
回复:4 & &
悬赏:0.0希赛币
gcc 生成.o文件怎样设置gcc选项,使gcc可以编译出test.o文件。我的test.c引用了lib1.a静态库,如果我的test.c中有main函数,用gcc test.c lib1.a -o test.o命令可以生成test.o文件,但是,如果test.c中没有main函数就报“undefined reference to 'main'”
.o是中间文件啊,不需要main函数gcc test.c lib1.a
n0th1ng & &
14:11:30 & &
& & (0)(1)引用gcc -c test.c
14:11:30 & &
& & (0)(1)引用gcc 生成可执行文件 是需要main的,所以,你如果只是想把 lib.a 和 test.c打包到一起编成动态链接库 .so 应该不会出现这个问题..
wendss2 & &
14:11:30 & &
& & (0)(1)引用
1 #include &stdio.h& 2 #include &stdlib.h& 3&
4 int test() 5 { 6
printf(&this is a test\n&); 7
return 0; 8 }gcc -o lib -c lib.c 这个没问题wendy_kudouran & &
14:11:30 & &
& & (0)(1)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&技术资料(903)
众所周知,Gcc编译的原始程序一般很大,其实有几种方法能大大减小目标代码的体积,一般有以下几种方法。
&&&& 基本知识来源:
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。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
(6)(7)(7)(9)(21)(8)(10)(3)(18)(41)(51)(6)(22)(16)(4)(1)(4)(7)(2)(6)(1)(8)(4)(4)(5)(1)(6)(3)(51)(59)(52)(63)(8)(11)(22)(11)(36)(96)(13)(4)(11)(9)(24)(90)(28)(31)(14)Linux下Gcc生成和使用静态库和动态库详解_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Linux下Gcc生成和使用静态库和动态库详解
上传于||文档简介
&&L​i​n​u​x​下​G​c​c​生​成​和​使​用​静​态​库​和​动​态​库​详​解
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩13页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 gcc 生成静态库 的文章

 

随机推荐