因为近期弄个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. jquery特效 幻灯片效果

    jquery特效 幻灯片效果,效果图如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Cont ...

  2. 奇葩的UI引用LayoutInflater.from问题

    今收到BUG一枚,一个页面的EditText的风格变为了系统默认(系统经过定制,风格和普通的不同) 经检查xml无任何不妥,最终问题出在LayoutInflater.from上. 如果LayoutIn ...

  3. 网页 HTML

    HTML--超文本标记语言Hyper Text Markup Language. 一,常规标签 (1)格式控制(记忆模型--Word工具栏) <b></b>加粗,<i&g ...

  4. Entity - 使用EF框架进行增删改查 - 模型先行

    模型先行:先创建数据库实体模型,然后再进行数据库的增删改查. 基本步骤是不变的,可参照 <Entity - 使用EF框架进行增删改查 - 数据库先行> 其中的不同是,在创建数据库实体模型的 ...

  5. linux 解压操作命令

    http://apps.hi.baidu.com/share/detail/37384818 download ADT link http://dl.google.com/android/ADT-0. ...

  6. 【ASP.NET Web API教程】2 创建各种Web API

    原文 [ASP.NET Web API教程]2 创建各种Web API Chapter 2: Creating Web APIs第2章 创建各种Web API 本文引自:http://www.asp. ...

  7. VC添加背景图片 的一种方法

    .如果程序是新建的对话框,要给其添加背景图片的步骤: 1)加入消息函数:afx_msg void OnPaint(); 2)BEGIN_MESSAGE_MAP(QueryDlg, CDialog) O ...

  8. windows下eclipse跑junit报错:CreateProcess error=206

    from:http://isuifengfei.iteye.com/blog/1684262 windows下,eclipse中运行junit出现错误提示: Exception occurred ex ...

  9. Swift - 选择框(UIPickerView)的用法

    1,选择框可以让用户以滑动的方式选择值.示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

  10. QML中多样化的ListModel(MultiDelegate)

    在QML的官方例子里面, 基本上都是一样的Delegate, 也就是说不管数据怎样, 样式都是不变的. 如果我们想要根据不同的数据类型来显示不同的UI该怎么办? 这里有一个例子. DataBank L ...