@RunZhi
2016-09-14T00:13:08.000000Z
字数 1343
阅读 693
操作系统实验报告
电脑型号: Hasee 神舟 战神K650D-i7
CPU型号: Intel Core i7-4700MQ四核处理器(主频:2.4GHz,CacheSize:6144KB,位数:64)
内存: DDR3 4GB
硬盘: 1TB 机械硬盘
操作系统:CentOS Linux release 7.2.1511 (Core)
编译器:gcc
以下列出编译使用的方法和时间.
配置好后,直接在终端输入make指令即可开始编译.但编译的时间非常长.加上time指令后显示的信息为:
real: 52m38.452s
user: 46m22.252s
sys: 6m16.200s
make指令可以带上参数 -jn (n正整数),n为同时执行的指令个数,具体设为多少由CPU核心数来定.本人设n为8.
执行time make -j8指令后,显示数据如下
real:20m5.536s
user:113m45.565s
sys:12m57.356s
由以上数据可以发现,使用了并行编译的指令参数可以大大加快编译时间.但是具体来讲能加快多少,依赖于makefile文件有没有处理好各个指令之间的依赖关系
ccache是linux下的一个软件.通过设置,可以把编译器编译出的中间文件保存到用户目录下的.ccache文件中,方便以后再次编译.具体的设置方法,详见ccache的主页.
通过配置后,执行time make -j8指令,显示数据如下:
real: 14m17.355s
user: 9m34.277s
sys: 3m19.552s
以下表格将以上数据进行汇总
编译方法 | real time | user time | sys time |
---|---|---|---|
直接编译 | 52m38.452s | 46m22.252s | 6m16.200s |
并行编译 | 20m5.536s | 113m45.565s | 12m57.356s |
并行编译+ccache | 14m17.355s | 9m34.277s | 3m19.552s |
附:除了以上的三个方法外,还可以使用tmpfs(类似于Ramdisk,但又不尽相同).但是由于本人的内存空间只有4G,而整个内核编译完之后都有几G之多.所以就没有加入这个方法的数据.实际上使用tmpfs也是很常用的加速linux程序编译的方法.
实际上,等待编译内核是一个很漫长的过程.我用了几乎一整天去以各种方式进行编译.编译过程中,由于避免加大电脑的负担(尤其是用了并行编译的),那么只能做别的无关本课程的事情了,比如运动运动,唱唱歌,看看书什么的.
主要遇到了如下几个问题:
怎么编译内核?
怎么加速编译内核?
怎么更新自己的内核?
...
上网找资料可以全部解决
由于内核源代码都是C写的,因此使用的编译器首要条件就是能够编译C语言.
但是本人曾经尝试使用clang来进行编译,但是改了makefile之后,错误百出,因为整个makefile文件都是为gcc和g++量身定做的.光是改export是不够的,还有各种参数与指令.
网上据说也有关于如何用clang来编译linux内核的.但是据说还不支持最新的linux内核,所以究竟可不可以,不知道.