5
在多核上编译时,可能导致make挂起的原因是什么?
昨天我正尝试从源代码编译ROOT软件包。由于我是在6核怪物机器上进行编译的,因此我决定继续使用并使用多核进行构建make -j 6。最初编译过程非常顺利,而且速度非常快,但有时make仅在一个内核上使用100%CPU即可挂起。 我进行了一些谷歌搜索,并在ROOT留言板上找到了此帖。自从我自己构建了这台计算机以来,我担心自己没有正确安装散热器,并且CPU过热或其他原因。不幸的是,我在工作中没有冰箱可以插入。;-) 我安装了lm-sensors软件包并make -j 6再次运行,这次监视CPU温度。尽管温度很高(接近60摄氏度),但从未超过高温或临界温度。 我尝试运行,make -j 4但是make在编译过程中的某个时间再次挂起,这次是在另一个位置。 最后,我仅在运行时进行编译make,并且运行良好。我的问题是:为什么挂了?由于它停在两个不同的位置,我想这可能是由于某种比赛条件造成的,但是我认为make应该聪明到足以使所有东西都处于正确的顺序,因为它提供了-j选择。