如何实现Linux操作系统最小化
设备即可.
5、 Reduction of inlining【减少直接插入】:直接插入是编译器将代码作为宏拷贝到它调用的每个位置,而不是产生一个函数调用.GCC默认将直接插入任何函数.通过抑制直接插入函数,代码运行稍微慢一点,编译器需要为调用和返回产生代码,得到的报酬是对象文件更小了. Linux-tiny补丁发布成一个tar包,它可以一起应用,也可以一个一个单独应用.
内核调整建议补充 尽管Linux-tiny项目涉及到许多的方面,还有几个额外的配置改动可以减少Linux脚印. 1、 移除ext2/3支持,使用另外一个不同的文件系统:ext2/3文件系统通常比较大,大于32K,大部分工程师启用一个Flash文件系统,但是不禁用ext2/3,这样会浪费内存. 2、 移除对sysctl的支持,sysctl允许用户在运行时调整内核参数,在大部分嵌入式设备中,内核配置一旦定了就不需要改动了,使用这个特征会浪费1K. 拥有帝国一切,皆有可能。欢迎访问phome.net 3、 减少IPC选项,大多数系统没有SysV IPC特性(grep你的msget、msgct、msgsnd和msgrcv代码)和POSIX消息查询(grep mq_*[a-z])一样可以运行,移除它们可以节约18K. 4、 查看你改动的效果 Size命令报告一个对象文件中所有代码和数据的大小,这与ls命令的输入是不同的,ls报告的是在文件系统中的字节数大小. 例如,一个内核用armv51交叉编译器编译报告如下: # armv5l-linux-size vmlinx Text小节是编译器发出的代码,data小节包括全局和其他使用初始静态符号的值,bss小节包括作为初始化的一部分被调零的静态数据. 虽然这个数据有启迪作用,但它没有展示系统消耗的内存部分,也无法通过查询vmlinux得出,但是查看连接在一起的文件,创建vmlinux是接下来最好的事情,为了得到这个信息,使用find命令在内核项目中定位built-in.o文件并计算大小: # find . -name "built-in.o" | xargs armv5l-linux-size 这个技术可以确切地指出占用了大量空间的代码,因此工程师可以移除这些代码,当这样做的时候,用户应该在创建之前执行编译清除动作,从内核中丢掉一个特征并不意味着那个之前编译好的对象文件将会被删除. 对于那些新添加到Linux内核中的东西,一个常见的问题是如何在内核配置程序中使用一个选项来联合一些built-in.o文件,这可以通过查看目录下的Makefile和Kconfig文件来实现,Makefile将包括象下面这样的一行: obj-$(CONFIG_ATALK) = p8022.o psnap.o 当用户设置了配置变量CONFIG_ATALK后它将生成右手边的文件.内核配置工具一般不会暴露下属配置变量名.要查出变量名之间的连接以及什么是可见的,在Kconfig中寻找没有CONFIG_前缀的变量名. 拥有帝国一切,皆有可能。欢迎访问phome.net find . -name Kconfig -exec fgrep -H -C3 "config ATALK" {} ; 它将产生下面这样的输出: ./drivers/net/appletalk/Kconfig-# |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |