因为近期弄个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平台程序的比較的更多相关文章

  1. OpenCV:Debug和Release模式 && 静态和动态编译

    1.Release和Debug的区别 Release版称为发行版,Debug版称为调试版. Debug中可以单步执行.跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢.Release版运行速度较 ...

  2. Linux下编译静态MinGW环境,编译windows平台Qt程序(使用MXE)

    参考链接: MXE.>大多数程序都是在windows平台下开发的程序.windows 在现实中也是绕不过的一个系统平台,做为受过几年VC,MFC”虐待”的程序员,在做为一个程序员之前是一位Lin ...

  3. IMX6开发板qt creator直接编译ARM架构程序

    除了通过 11.2.2 小节通过命令行的操作来编译在 iTOP-imx6 开发板上运行的程序,还可以直接在 qtcreator 上设置,然后每次编译的程序都可以在开发板上运行.如下图所示,打开 qtc ...

  4. 使用Cordova编译Android平台程序提示:Could not reserve enough space for 2097152KB object heap

    大体的意思是系统内存不够用,创建VM失败.试了网上好几种方法都不行,最后这个方法可以了: 开始->控制面板->系统->高级设置->环境变量->系统变量 新建变量: 变量名 ...

  5. JIT(动态编译)和AOT(静态编译)编译技术比较

    Java 应用程序的性能经常成为开发社区中的讨论热点.因为该语言的设计初衷是使用解释的方式支持应用程序的可移植性目标,早期 Java 运行时所提供的性能级别远低于 C 和 C++ 之类的编译语言.尽管 ...

  6. 让C#语言充当自身脚本!——.NET中的动态编译

    原文:让C#语言充当自身脚本!--.NET中的动态编译 代码的动态编译并执行是.NET平台提供给我们的很强大的一个工具,用以灵活扩展(当然是面对内部开发人员)复杂而无法估算的逻辑,并通过一些额外的代码 ...

  7. [改善Java代码]慎用动态编译

    建议17: 慎用动态编译 //=========这篇博文暂时理解不透......... 动态编译一直是Java的梦想,从Java 6版本它开始支持动态编译了,可以在运行期直接编译.java文件,执行. ...

  8. Tensorflowlite移植ARM平台iMX6

    一.LINUX环境下操作: 1.安装交叉编译SDK (仅针对该型号:i.MX6,不同芯片需要对应的交叉编译SDK) 编译方法参考:手动编译用于i.MX6系列的交叉编译SDK 2.下载Tensorflo ...

  9. 基于.NetCore开发博客项目 StarBlog - (12) Razor页面动态编译

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...

随机推荐

  1. MFC超链接静态类的使用

    源代码:http://download.csdn.net/detail/nuptboyzhb/4197151 CHyperLink类,是由CStatic类派生出来,重载了CStatic类的如下函数: ...

  2. hdu 1760 一道搜索博弈题 挺新颖的题目

    A New Tetris Game Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  3. Eclipse中提高Android SDK Manager下载速度方法

    在Windows-System32-drivers-ect目录下找到hosts文件 打开hosts文件(用记事本打开就可以),在文件以下填上一下内容: 203.208.46.146 www.googl ...

  4. static作用

    C程序一直由下列部分组成:      1)正文段——CPU运行的机器指令部分:一个程序仅仅有一个副本:仅仅读,防止程序因为意外事故而改动自身指令:      2)初始化数据段(数据段)——在程序中全部 ...

  5. ice cave

    Description You play a computer game. Your character stands on some level of a multilevel ice cave. ...

  6. Java中@Deprecated、@SupressWarning、@Override的作用

    Annotation注解在 Java 中有着很广泛的,他是做为一种标识 为javac所识别.每一个注解 都对应这一个Java类  在java.lang包中 有三个注解  分别是 Deprecated  ...

  7. log4j的性能瓶颈定位与性能优化(org.apache.log4j.spi.RootLogger) (转)

    最近执行一个项目调优,发现使用第三方的Json库导致性能差.原以为问题就这么定位到了,结果去掉Json操作后,性能也不见好转. 现象非常诡异:CPU.内存.网络.磁盘使用率均有剩余,而且压力也是足够的 ...

  8. 去掉Enter字符(\r)的几个方法

    数据:test.txt: f1:f2:f3:# Shell: #!/bin/bash while read line do echo $line result1=$(echo $line|awk -F ...

  9. ZigBee研究之旅(一)

    *********************************************************************** 以下有引用webee公司的文档的内容,版权属于webee ...

  10. 超炫的Button按钮展开弧形动画效果

    ----------------------收藏备用  ------------------------------- 代码下载:http://download.csdn.net/detail/qq2 ...