大家有没有提高编译内核的速度的方法?

400 views
Skip to first unread message

hank peng

unread,
May 14, 2010, 4:06:59 AM5/14/10
to linux-...@zh-kernel.org
整个编译内核编译下来太time-consuming了,大家有没有提高编译速度的方法,make有没有什么选项?
我这人比较懒哦!

--
The simplest is not all best but the best is surely the simplest!
_______________________________________________
Linux 内核开发中文邮件列表
Linux-...@zh-kernel.org
http://zh-kernel.org/mailman/listinfo/linux-kernel
Linux 内核开发中文社区: http://zh-kernel.org

--
这是zh-kernel邮件列表内容的只读归档,如果想参与讨论请访问http://zh-kernel.org进行订阅。

张绍文

unread,
May 14, 2010, 4:11:52 AM5/14/10
to hank peng, linux-...@zh-kernel.org
在 2010年5月14日 下午4:06,hank peng <peng...@gmail.com> 写道:
> 整个编译内核编译下来太time-consuming了,大家有没有提高编译速度的方法,make有没有什么选项?
> 我这人比较懒哦!
>
对双核CPU来说用-j3,3表示同时运行的任务数。建议CPU核心数量加1。
机器多的话可以用distcc进行分布式编译。

hank peng

unread,
May 14, 2010, 4:18:03 AM5/14/10
to 张绍文, linux-...@zh-kernel.org
在 2010年5月14日 下午4:11,张绍文 <zha...@gwbnsh.net.cn> 写道:
> 在 2010年5月14日 下午4:06,hank peng <peng...@gmail.com> 写道:
>> 整个编译内核编译下来太time-consuming了,大家有没有提高编译速度的方法,make有没有什么选项?
>> 我这人比较懒哦!
>>
> 对双核CPU来说用-j3,3表示同时运行的任务数。建议CPU核心数量加1。
> 机器多的话可以用distcc进行分布式编译。
>
如果是单CPU呢?

--
The simplest is not all best but the best is surely the simplest!

Cheng Renquan

unread,
May 14, 2010, 4:19:41 AM5/14/10
to hank peng, 张绍文, linux-...@zh-kernel.org
2010/5/14 hank peng <peng...@gmail.com>:

> 在 2010年5月14日 下午4:11,张绍文 <zha...@gwbnsh.net.cn> 写道:
>> 在 2010年5月14日 下午4:06,hank peng <peng...@gmail.com> 写道:
>>> 整个编译内核编译下来太time-consuming了,大家有没有提高编译速度的方法,make有没有什么选项?
>>> 我这人比较懒哦!
>>>
>> 对双核CPU来说用-j3,3表示同时运行的任务数。建议CPU核心数量加1。
>> 机器多的话可以用distcc进行分布式编译。
>>
> 如果是单CPU呢?

单核就是 make -j2 了,

规律是 make -j "nr_cpu+1"

Dean Sinaean

unread,
May 14, 2010, 4:23:37 AM5/14/10
to hank peng, 张绍文, linux-...@zh-kernel.org
我曾经用过一台512M内存机器,每次编译半上小时。不过每一次编译之后以后就不要再重新编译了,接着原来的编译就好,这样的话,就只编译改变了的,而不是都编译一次。还就是如果是做驱动的话,不要每次都编译进内核,做为模块单独编译就好了。呵呵,以前走过些弯路,不知是不是有别人也走过。

2010/5/14 hank peng <peng...@gmail.com>

Li Zefan

unread,
May 14, 2010, 4:27:41 AM5/14/10
to hank peng, linux-...@zh-kernel.org
于 2010年05月14日 16:06, hank peng 写道:
> 整个编译内核编译下来太time-consuming了,大家有没有提高编译速度的方法,make有没有什么选项?
> 我这人比较懒哦!
>

尽量去掉不要的module,最简单的方法是用scripts/kconfig/streamline_config.pl
这个脚本,至于怎么用,脚本里有说明。

Jike Song

unread,
May 14, 2010, 4:27:01 AM5/14/10
to 张绍文, linux-...@zh-kernel.org
2010/5/14 张绍文 <zha...@gwbnsh.net.cn>:

> 在 2010年5月14日 下午4:06,hank peng <peng...@gmail.com> 写道:
>> 整个编译内核编译下来太time-consuming了,大家有没有提高编译速度的方法,make有没有什么选项?
>> 我这人比较懒哦!
>>
> 对双核CPU来说用-j3,3表示同时运行的任务数。建议CPU核心数量加1。
> 机器多的话可以用distcc进行分布式编译。

加上ccache

--
Thanks,
Jike

Adam Jiang

unread,
May 14, 2010, 4:46:31 AM5/14/10
to hank peng, linux-...@zh-kernel.org
2010/5/14 hank peng <peng...@gmail.com>:
> 整个编译内核编译下来太time-consuming了,大家有没有提高编译速度的方法,make有没有什么选项?
> 我这人比较懒哦!

使用 distcc 和 ccache 都可以提高效率。
make -jN 可以让多个target并行处理。

/大头阿当

Américo Wang

unread,
May 14, 2010, 6:24:35 AM5/14/10
to Li Zefan, linux-...@zh-kernel.org
On Fri, May 14, 2010 at 04:27:41PM +0800, Li Zefan wrote:
>于 2010年05月14日 16:06, hank peng 写道:
>> 整个编译内核编译下来太time-consuming了,大家有没有提高编译速度的方法,make有没有什么选项?
>> 我这人比较懒哦!
>>
>
>尽量去掉不要的module,最简单的方法是用scripts/kconfig/streamline_config.pl
>这个脚本,至于怎么用,脚本里有说明。

或者直接:

make localmodconfig (localyesconfig)

:-)

但是,很明显streamline_config.pl是缩减编译的内核模块数量,这当然能减少编译时间,
而楼主想要的未必是这个。

而且streamline_config.pl有个问题,当前未加载的模块是不会被编译的,也就是说,
新编译的内核里可能会丢失一些你需要的模块。

Américo Wang

unread,
May 14, 2010, 6:26:57 AM5/14/10
to Cheng Renquan, 张绍文, linux-...@zh-kernel.org
On Fri, May 14, 2010 at 04:19:41PM +0800, Cheng Renquan wrote:
>2010/5/14 hank peng <peng...@gmail.com>:
>> 在 2010年5月14日 下午4:11,张绍文 <zha...@gwbnsh.net.cn> 写道:
>>> 在 2010年5月14日 下午4:06,hank peng <peng...@gmail.com> 写道:
>>>> 整个编译内核编译下来太time-consuming了,大家有没有提高编译速度的方法,make有没有什么选项?
>>>> 我这人比较懒哦!
>>>>
>>> 对双核CPU来说用-j3,3表示同时运行的任务数。建议CPU核心数量加1。
>>> 机器多的话可以用distcc进行分布式编译。
>>>
>> 如果是单CPU呢?
>
>单核就是 make -j2 了,
>
>规律是 make -j "nr_cpu+1"

我自己写的脚本里同时使用-jX 和 ccache:

make CC='ccache gcc' -j5

hank peng

unread,
May 15, 2010, 12:41:24 PM5/15/10
to Américo Wang, Cheng Renquan, 张绍文, linux-...@zh-kernel.org
在 2010年5月14日 下午6:26,Américo Wang <xiyou.w...@gmail.com> 写道:
> On Fri, May 14, 2010 at 04:19:41PM +0800, Cheng Renquan wrote:
>>2010/5/14 hank peng <peng...@gmail.com>:
>>> 在 2010年5月14日 下午4:11,张绍文 <zha...@gwbnsh.net.cn> 写道:
>>>> 在 2010年5月14日 下午4:06,hank peng <peng...@gmail.com> 写道:
>>>>> 整个编译内核编译下来太time-consuming了,大家有没有提高编译速度的方法,make有没有什么选项?
>>>>> 我这人比较懒哦!
>>>>>
>>>> 对双核CPU来说用-j3,3表示同时运行的任务数。建议CPU核心数量加1。
>>>> 机器多的话可以用distcc进行分布式编译。
>>>>
>>> 如果是单CPU呢?
>>
>>单核就是 make -j2 了,
>>
>>规律是 make -j "nr_cpu+1"
>
> 我自己写的脚本里同时使用-jX 和 ccache:
>
> make CC='ccache gcc' -j5
>

great, thanks a lot!!

--
The simplest is not all best but the best is surely the simplest!

Reply all
Reply to author
Forward
0 new messages