免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 695 | 回复: 0
打印 上一主题 下一主题

如何实现Linux系统最小化(4) [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之北控
日期:2022-03-04 22:35:50
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-26 18:25 |只看该作者 |倒序浏览

作者: Gene Sally/黄永兵 译 出处:51CTO.com 


使用一个交替的c库
Newlib和dietlibc通过提供一个包装的脚本调用编译器使用正确的参数集,忽略包括在编译器中的标准c库,使用一个替换的c库。uClibc有点不同,它需要工具链。
一旦你知道如何调用GCC,接下来就要为项目更新Makefile文件或建立脚本,大多数情况下,为项目在Makefile文件中使用下面这样一行:
CC=CROSS_COMPILE-gcc
假如这样,所有用户都需要从命令行运行make命令覆盖CC变量:
make CC=dietc
这将导致makefile为c编译器调用diet,尽管看起来很诱人,不要在这个宏中添加参数,用CFLAGS变量代替,例如:
make CC="gcc -Os"
应该是:
make CC=gcc CFLAGS="-Os"
这个很重要,因为某些规则将调用CC编译,参数将没有意义,并会产生错误。
回到根文件系统
在选择了c库后,所有在根文件系统中的代码需要用新的编译器编译,那样代码就可以使用最近的、更小的c库。在这一点上,值得对静态与共享库进行评估,对于目标究竟该选择哪个,如果设备将运行任意的代码,而且在部署时该代码是未知的,共享库是最好的选择。如:设备可能暴露一个API允许最终用户或专业工程师编写模块。假如这样,设备上的库应该为这些新特征实现提供最大的灵活性。
如果系统包括许多分隔的程序共享库也是最佳的选择,假如这样,共享代码的拷贝将比复制几个文件的相同代码更小。
当只有几个程序在使用时,最佳做法是为每种用途创建一个系统然后比较最后的大小,大多数情况下,较小的系统是没有共享库的,而且还有一个额外的受益,没有共享库的系统载入和启动程序时更快(因为没有连接这一步了),因此用户从效率角度来说也受益了。
总结
尽管没有象魔术一样的工具使系统变得更小,但也不缺少工具帮助使系统仅可能变得更小,而且,使Linux变小比减小内核大小更困难,根文件系统需要严格检查,因为这个部件比内核消耗得更多空间,本文主要叙述了可执行映像大小,减少运行中程序内存需求。
资源
1、Linux-tiny补丁:
www.selenic.com/linux-tiny
.一系列减少内核映射大小和运行时资源消耗的小补丁,这里面的许多补丁已经集成到内核中了。
2、GNU C库:
www.gnu.org/software/libc
. GNU C标准库是c库的规范实现,可以在几乎所有平台运行,而且可以向后兼容。
3、uClibc:
www.uclibc.org
. 更小的c库。
4、Newlib: sourceware.org/newlib. Red Hat的小C库。
5、dietlibc:
www.fefe.de/dietlibc
. 最小的c库。
原文出处:
http://www.linuxjournal.com/article/9940


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/31/showart_587580.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP