mom*_*eem 19 linux time kernel compilation
我有8GB RAM的核心i5.我的机器上安装了VMware工作站10.0.1.我在VMware上安装了Fedora 20 Desktop Edition作为客户操作系统.
我正在研究Linux内核源代码v 3.14.1.我正在为Linux内核开发一个I/O调度程序.每次编译和安装整个内核代码以查看更改大约花费1小时30分钟后,对代码进行任何修改.
编译和安装命令:
make menuconfig
,
make
,
make modules
,
make modules_install
,
make install
所以我的问题是可以将1小时30分钟的时间缩短到10到15分钟吗?
rod*_*igo 22
不要make menuconfig
对你对源做出的每一个改变做,因为无论你的改变多么微不足道,它都会触发所有内容的完整编译.只有在内核的配置选项发生变化时才需要这样做,而且在开发过程中很少发生这种情况.
做就是了:
make
Run Code Online (Sandbox Code Playgroud)
或者如果您更喜欢并行编译:
make -j4
Run Code Online (Sandbox Code Playgroud)
或者你想要的任何数量的并发任务.
然后,当然make install
,可能需要等等来部署最近构建的二进制文件.
另一个技巧是将内核配置为测试所需的最小值.我发现对于许多任务来说,UML编译(用户模式Linux)是最快的.你也可能觉得有用make localmodconfig
而不是make menuconfig
开始.
bro*_*oot 10
make
并行构建-j
选项即对于例如而不是运行:
make
Run Code Online (Sandbox Code Playgroud)
跑:
make ARCH=<your architecture> -jN
Run Code Online (Sandbox Code Playgroud)
N
您机器上的内核数在哪里(cat /proc/cpuinfo
列出内核数)。例如,对于i386
目标和主机4 cores
(输出cat /proc/cpuinfo
):
make ARCH=i386 -j4
Run Code Online (Sandbox Code Playgroud)
同样,您可以使用标志运行其他 make 目标(modules
, modules_install
, install
)-jN
。
注意: make
检查已修改的文件并仅编译那些已修改的文件,因此只有初始构建需要时间,后续构建会更快。
make -j
将利用所有可用的 CPU。
make menuconfig
每次进行更改时都不需要再次运行- 只需要一次创建内核.config
文件.(或者如果编辑Kconfig
文件以添加或修改配置选项,可能会再次出现,但这当然不应该经常发生.)
只要您.config
独自一人,运行时make
应该只重新编译您更改的文件.每次都必须编译一些文件,但绝大多数都没有.