关于静态与动态编译arm平台程序的比較
因为近期弄个console程序,调用了readline,ncurses库,这两个动态库加起来有四百多k。而程序事实上非常小,其它地方也没使用到这两个库
所以想静态编译看看console程序有多大。
#arm-linux-gcc cli.c -o console libreadline.a libncurses.a
#ls -l
total 1932
-rwxrwxr-x 1 root root 8427 Jul 7 15:19 cli
-rw-r--r-- 1 root root 6647 Jul 7 17:57 cli.c
-rwxr-xr-x 1 root root 624681 Jul 8 15:00 console
-rw-r--r-- 1 root root 108398 Jul 7 16:05 libhistory.a
-rw-r--r-- 1 root root 433720 Jul 7 17:09 libncurses.a
-rw-r--r-- 1 root root 780788 Jul 7 16:05 libreadline.a
一看有六百多k。貌似大了点,加上-s试试
# arm-linux-gcc cli.c -o console libreadline.a libncurses.a -s
# ls -l
total 1576
-rwxrwxr-x 1 root root 8427 Jul 7 15:19 cli
-rw-r--r-- 1 root root 6647 Jul 7 17:57 cli.c
-rwxr-xr-x 1 root root 259323 Jul 8 15:03 console
-rw-r--r-- 1 root root 108398 Jul 7 16:05 libhistory.a
-rw-r--r-- 1 root root 433720 Jul 7 17:09 libncurses.a
-rw-r--r-- 1 root root 780788 Jul 7 16:05 libreadline.a
剩下260多k这样。貌似能接受。
回过来再看看动态库链接下的console程序
#arm-linux-gcc cli.c -o console -lreadline -lncurses
# ls -l
total 1332
-rwxrwxr-x 1 root root 8427 Jul 7 15:19 cli
-rw-r--r-- 1 root root 6647 Jul 7 17:57 cli.c
-rwxr-xr-x 1 root root 10445 Jul 8 15:12 console
-rw-r--r-- 1 root root 108398 Jul 7 16:05 libhistory.a
-rw-r--r-- 1 root root 433720 Jul 7 17:09 libncurses.a
-rw-r--r-- 1 root root 780788 Jul 7 16:05 libreadline.a
10.2k的样子。加上动态库也就四百多k
再进一步加上-s试试
#arm-linux-gcc cli.c -o console -lreadline -lncurses -s
# ls -l
total 1328
-rwxrwxr-x 1 root root 8427 Jul 7 15:19 cli
-rw-r--r-- 1 root root 6647 Jul 7 17:57 cli.c
-rwxr-xr-x 1 root root 6839 Jul 8 15:13 console
-rw-r--r-- 1 root root 108398 Jul 7 16:05 libhistory.a
-rw-r--r-- 1 root root 433720 Jul 7 17:09 libncurses.a
-rw-r--r-- 1 root root 780788 Jul 7 16:05 libreadline.a
6.7k的样子,事实上程序是非常小的一个。程序库倒是非常大一坨。
关于静态与动态编译arm平台程序的比較的更多相关文章
- OpenCV:Debug和Release模式 && 静态和动态编译
1.Release和Debug的区别 Release版称为发行版,Debug版称为调试版. Debug中可以单步执行.跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢.Release版运行速度较 ...
- Linux下编译静态MinGW环境,编译windows平台Qt程序(使用MXE)
参考链接: MXE.>大多数程序都是在windows平台下开发的程序.windows 在现实中也是绕不过的一个系统平台,做为受过几年VC,MFC”虐待”的程序员,在做为一个程序员之前是一位Lin ...
- IMX6开发板qt creator直接编译ARM架构程序
除了通过 11.2.2 小节通过命令行的操作来编译在 iTOP-imx6 开发板上运行的程序,还可以直接在 qtcreator 上设置,然后每次编译的程序都可以在开发板上运行.如下图所示,打开 qtc ...
- 使用Cordova编译Android平台程序提示:Could not reserve enough space for 2097152KB object heap
大体的意思是系统内存不够用,创建VM失败.试了网上好几种方法都不行,最后这个方法可以了: 开始->控制面板->系统->高级设置->环境变量->系统变量 新建变量: 变量名 ...
- JIT(动态编译)和AOT(静态编译)编译技术比较
Java 应用程序的性能经常成为开发社区中的讨论热点.因为该语言的设计初衷是使用解释的方式支持应用程序的可移植性目标,早期 Java 运行时所提供的性能级别远低于 C 和 C++ 之类的编译语言.尽管 ...
- 让C#语言充当自身脚本!——.NET中的动态编译
原文:让C#语言充当自身脚本!--.NET中的动态编译 代码的动态编译并执行是.NET平台提供给我们的很强大的一个工具,用以灵活扩展(当然是面对内部开发人员)复杂而无法估算的逻辑,并通过一些额外的代码 ...
- [改善Java代码]慎用动态编译
建议17: 慎用动态编译 //=========这篇博文暂时理解不透......... 动态编译一直是Java的梦想,从Java 6版本它开始支持动态编译了,可以在运行期直接编译.java文件,执行. ...
- Tensorflowlite移植ARM平台iMX6
一.LINUX环境下操作: 1.安装交叉编译SDK (仅针对该型号:i.MX6,不同芯片需要对应的交叉编译SDK) 编译方法参考:手动编译用于i.MX6系列的交叉编译SDK 2.下载Tensorflo ...
- 基于.NetCore开发博客项目 StarBlog - (12) Razor页面动态编译
系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...
随机推荐
- boost::asio 连接管理11 如何关闭连接
在实际产品运行中,对连接管理有了更新的认识,这里分享一下. shared_ptr管理连接对象的生命周期 shared_ptr的引用计数器决定了连接对象的生命周期.这里我说的连接对象就是在我的前文:ht ...
- 《火球——UML大战需求分析》(第2章 耗尽脑汁的需求分析工作)——2.1 需求分析面面观
说明: <火球——UML大战需求分析>是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张.欢迎你按文章的序号顺序阅读,谢 ...
- Tui-x简单介绍
1.什么是Tui-x Tui-x是一个创建cocos2d-x UI界面的解决方式,而builder用的则是FlashCS,通过使用jsfl来拓展FlashCS从而达到UI编辑器的功能.这个jsfl所做 ...
- Android-Cannot merge new index 66195 into a non-jumbo instruction的解决的方法
转载请注明来源:http://blog.csdn.net/goldenfish1919/article/details/33729679 用eclispe打包的时候报错: [2014-06-23 13 ...
- TCP/IP协议的编写《转载》
基于HHARM9-EDU的TCP/IP(UDP)协议的实现 原文网址:http://blog.csdn.net/lhj0503/article/details/3323788 摘 要:嵌入式技术的发展 ...
- HDU 5045(Contest-费用流)[template:费用流]
Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submi ...
- 获取ocx运行路径的另一种方法
在InitInstance里边可以获取 1 2 3 4 5 6 7 8 9 10 11 12 if (bInit) { // TODO: 在此添加您自己的模块初始化 ...
- Processing_百度百科
Processing_百度百科 Processing
- FFT算法的物理意义
FFT是离散傅立叶变换的高速算法,能够将一个信号变换到频域.有些信号在时域上是非常难看出什么特征的,可是如果变换到频域之后,就非常easy看出特征了.这就是非常多信号分析採用FFT变换的原因.另外,F ...
- IOT和HEAP表区别
Index Organized table by itself is a B-tree index. Index key is the primary key and the rest of colu ...