linux 进程最小化,如何实现Linux系统最小化(4)
使用一个交替的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)相关推荐
- python做Linux进程运行,Python实现在Linux系统下更改当前进程运行用户
在上一篇文章中,我们讲了如何在linux上用python写一个守护进程.主要原理是利用linux的fork函数来创建一个进程,然后退出父进程运行,生成的子进程就会成为一个守护进程.细心观察的可能会发现 ...
- linux进程看门狗使用方式,Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法...
Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法 [技术领域] [0001] 本发明涉及Linux系统的进程监控技术领域,特别是涉及一种Linux系统中基于看 门狗的精细化进程监控方法及 ...
- Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四)
Linux进程的退出 linux下进程退出的方式 正常退出 从main函数返回return 调用exit 调用_exit 异常退出 调用abort 由信号终止 _exit, exit和_Exit的区别 ...
- linux进程属主6,20150917 Linux进程查看与管理以及作业管理
第一.基础知识 MBR引导--内核--内核程序-->协调其它程序 一般内核运行在硬件之上,各应用也在硬件之前 1)OS的基本功能:文件系统.网络功能.进程管理.内存管理.驱动程序.安全功能 以上 ...
- linux进程上下文切换的具体过程,Linux实验三 结合中断上下文切换和进程上下文切换分析Linux内核一般执行过程...
fork系统调?创建?进程,也就?个进程变成了两个进程,两个进程执?相同的代码,只是fork系统调?在?进程和?进程中的返回值不同. 打开linux-5.4.34/arch/x86/entry/sys ...
- linux进程异常退出分析,ECS Linux程序异常退出提示“out of memory”的临时解决办法...
ECS Linux上的程序会出现异常退出的情况,退出的原因多数是因为系统内存不足,Linux内存不足通常会触发 Linux 内核里的 Out of Memory (OOM) killer,OOM ki ...
- linux进程q是什么意思,Linux zombie进程
在Linux进程的5种状态:(选自<深入理解Linux内核>) 1. 可运行(正在运行或在运行队列中等待) 2. 可中断的等待(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. ...
- linux 进程 锁定cpu,如何限制Linux中任何进程的CPU使用情况 | MOS86
有没有经历过您打开一个特定应用程序(如Firefox)的情况,并使整个系统处于停顿状态?如果您正在运行Web服务器,最后一件事就是让应用程序崩溃整个系统并将所有网站关闭. Cpulimit是一个可以限 ...
- Linux进程top命令作用是,linux top命令详解
top 命令主要用于查看进程的相关信息,同时它也会提供系统平均负载,cpu 信息和内存信息.下面的截图展示了 top 命令默认提供的信息: 系统平均负载 top 命令输出中的第一行是系统的平均负载,这 ...
- Linux进程所处状态主要包括,linux进程状态
为了管理进程,内核必须对每个进程所做的事情进行清楚的描述,内核使用PCB(Proccess Control Block)来记录这样的信息.在linux系统中,它就是一个 struct task_str ...
最新文章
- 微软OOXML申请国际文档标准已获通过 中国投反对票
- 2019年陕西省普通高校招生考生成绩统计表(理工、艺理、体育)
- linux 权限模式,Linux权限模式
- db:migrate
- Vue强制绑定class和style_使用字符串_对象_素组的方式实现强制绑定---vue工作笔记0007
- 张正友相机标定法--相机去畸变(C++)
- 计算机思维和数学的那些事
- 计算机怎么改鼠标标志,win10系统电脑的鼠标图标怎么修改
- 一文盘点中国商业航天:民营火箭的两类瓶颈和三大趋势
- 小麦苗的常用代码--常用命令(仅限自己使用)--上
- 古巨蜥好几吨重,但在我们智人祖先面前也是枉然 | 袁硕 一席第449位讲者
- P2184 贪婪大陆 线段树(优化:区间修改变为单点修改)
- raspberry pi系统配置
- 达人篇:5)公差的正态分布与CPK与制程能力(重要)
- PWM 实现调光——测试pwn的功能
- Mac系统brew install 安装报错 Error: Failure while executing
- 51单片机——存储器
- 手把手教你获得电信公网ipv6
- js实现点气球小游戏
- hdu1272(小希迷宫 并查集)
热门文章
- 创建 vue 项目 报错:command failed: npm install --loglevel error --legacy-peer-deps
- Win7+Ubuntu18.04双系统安装教程
- C语言给朋友写生日祝福(输出一个生日蛋糕形状)
- 上海市计算机考试准考证号忘记了
- vue-pdf-signature
- CC00069.bigdatajava——|Java集合类库.V05|——|Java.v05|异常机制.v50|异常抛出|补充|
- 浅谈js的常用继承封装和多态
- Scala学习笔记(六) Scala的偏函数和偏应用函数
- 什么是Facebook像素?作用是什么?
- 台积电三星2022年将量产3nm芯片:iPhone会是首发吗?