使用一个交替的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库。

【51CTO.COM 独家翻译,转载请注明出处及作者!】

【责任编辑:于捷 TEL:(010)68476606】

linux 进程最小化,如何实现Linux系统最小化(4)相关推荐

  1. python做Linux进程运行,Python实现在Linux系统下更改当前进程运行用户

    在上一篇文章中,我们讲了如何在linux上用python写一个守护进程.主要原理是利用linux的fork函数来创建一个进程,然后退出父进程运行,生成的子进程就会成为一个守护进程.细心观察的可能会发现 ...

  2. linux进程看门狗使用方式,Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法...

    Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法 [技术领域] [0001] 本发明涉及Linux系统的进程监控技术领域,特别是涉及一种Linux系统中基于看 门狗的精细化进程监控方法及 ...

  3. Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四)

    Linux进程的退出 linux下进程退出的方式 正常退出 从main函数返回return 调用exit 调用_exit 异常退出 调用abort 由信号终止 _exit, exit和_Exit的区别 ...

  4. linux进程属主6,20150917 Linux进程查看与管理以及作业管理

    第一.基础知识 MBR引导--内核--内核程序-->协调其它程序 一般内核运行在硬件之上,各应用也在硬件之前 1)OS的基本功能:文件系统.网络功能.进程管理.内存管理.驱动程序.安全功能 以上 ...

  5. linux进程上下文切换的具体过程,Linux实验三 结合中断上下文切换和进程上下文切换分析Linux内核一般执行过程...

    fork系统调?创建?进程,也就?个进程变成了两个进程,两个进程执?相同的代码,只是fork系统调?在?进程和?进程中的返回值不同. 打开linux-5.4.34/arch/x86/entry/sys ...

  6. linux进程异常退出分析,ECS Linux程序异常退出提示“out of memory”的临时解决办法...

    ECS Linux上的程序会出现异常退出的情况,退出的原因多数是因为系统内存不足,Linux内存不足通常会触发 Linux 内核里的 Out of Memory (OOM) killer,OOM ki ...

  7. linux进程q是什么意思,Linux zombie进程

    在Linux进程的5种状态:(选自<深入理解Linux内核>) 1. 可运行(正在运行或在运行队列中等待) 2. 可中断的等待(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. ...

  8. linux 进程 锁定cpu,如何限制Linux中任何进程的CPU使用情况 | MOS86

    有没有经历过您打开一个特定应用程序(如Firefox)的情况,并使整个系统处于停顿状态?如果您正在运行Web服务器,最后一件事就是让应用程序崩溃整个系统并将所有网站关闭. Cpulimit是一个可以限 ...

  9. Linux进程top命令作用是,linux top命令详解

    top 命令主要用于查看进程的相关信息,同时它也会提供系统平均负载,cpu 信息和内存信息.下面的截图展示了 top 命令默认提供的信息: 系统平均负载 top 命令输出中的第一行是系统的平均负载,这 ...

  10. Linux进程所处状态主要包括,linux进程状态

    为了管理进程,内核必须对每个进程所做的事情进行清楚的描述,内核使用PCB(Proccess Control Block)来记录这样的信息.在linux系统中,它就是一个 struct task_str ...

最新文章

  1. 微软OOXML申请国际文档标准已获通过 中国投反对票
  2. 2019年陕西省普通高校招生考生成绩统计表(理工、艺理、体育)
  3. linux 权限模式,Linux权限模式
  4. db:migrate
  5. Vue强制绑定class和style_使用字符串_对象_素组的方式实现强制绑定---vue工作笔记0007
  6. 张正友相机标定法--相机去畸变(C++)
  7. 计算机思维和数学的那些事
  8. 计算机怎么改鼠标标志,win10系统电脑的鼠标图标怎么修改
  9. 一文盘点中国商业航天:民营火箭的两类瓶颈和三大趋势
  10. 小麦苗的常用代码--常用命令(仅限自己使用)--上
  11. 古巨蜥好几吨重,但在我们智人祖先面前也是枉然 | 袁硕 一席第449位讲者
  12. P2184 贪婪大陆 线段树(优化:区间修改变为单点修改)
  13. raspberry pi系统配置
  14. 达人篇:5)公差的正态分布与CPK与制程能力(重要)
  15. PWM 实现调光——测试pwn的功能
  16. Mac系统brew install 安装报错 Error: Failure while executing
  17. 51单片机——存储器
  18. 手把手教你获得电信公网ipv6
  19. js实现点气球小游戏
  20. hdu1272(小希迷宫 并查集)

热门文章

  1. 创建 vue 项目 报错:command failed: npm install --loglevel error --legacy-peer-deps
  2. Win7+Ubuntu18.04双系统安装教程
  3. C语言给朋友写生日祝福(输出一个生日蛋糕形状)
  4. 上海市计算机考试准考证号忘记了
  5. vue-pdf-signature
  6. CC00069.bigdatajava——|Java集合类库.V05|——|Java.v05|异常机制.v50|异常抛出|补充|
  7. 浅谈js的常用继承封装和多态
  8. Scala学习笔记(六) Scala的偏函数和偏应用函数
  9. 什么是Facebook像素?作用是什么?
  10. 台积电三星2022年将量产3nm芯片:iPhone会是首发吗?