小编use*_*424的帖子

在多核上编译时,什么可能导致 make 挂起?

昨天我试图从源代码编译ROOT包。由于我是在 6 核怪物机器上编译它,因此我决定继续使用make -j 6. 一开始编译很顺利,速度也很快,但在某个时候make,只在一个内核上使用了 100% 的 CPU。

我做了一些谷歌搜索,并在 ROOT 留言板上找到了这篇文章。自从我自己组装了这台电脑,我担心我没有正确应用散热器和CPU过热什么的。不幸的是,我在工作时没有可以把它塞进去的冰箱。;-)

我安装了lm-sensors软件包并make -j 6再次运行,这次是监控 CPU 温度。尽管它变得很高(接近 60 C),但它从未超过高温或临界温度。

我尝试运行make -j 4make在编译过程中的某个时候再次挂起,这次是在不同的位置。

最后,我编译运行make并运行良好。我的问题是:它为什么挂了?由于它停在两个不同的位置,我猜这是由于某种竞争条件,但我认为make应该足够聪明,以正确的顺序排列所有东西,因为它提供了-j选项。

linux compiling make

18
推荐指数
1
解决办法
2万
查看次数

标签 统计

compiling ×1

linux ×1

make ×1