0
我正在使用GCC 4.7並編譯我的C++代碼項目。代碼由分佈在目錄中的文件組成。makefile:如何快速編譯
在我使用的RHEL服務器上,有16個內核,但編譯速度仍然很慢。你能否提出可能的替代方案或makefile的選項,這可能有助於快速編譯。我已經嘗試過-j,但它只編譯一些文件夾並停止;不會編譯主要的二進制文件。
我將不勝感激任何幫助。
我正在使用GCC 4.7並編譯我的C++代碼項目。代碼由分佈在目錄中的文件組成。makefile:如何快速編譯
在我使用的RHEL服務器上,有16個內核,但編譯速度仍然很慢。你能否提出可能的替代方案或makefile的選項,這可能有助於快速編譯。我已經嘗試過-j,但它只編譯一些文件夾並停止;不會編譯主要的二進制文件。
我將不勝感激任何幫助。
如果在使用-j
進行編譯時,如果makefile文件失敗,但沒有正常工作,那麼您可能需要修復makefile才能在並行編譯中正常工作。否則,那些其他15個內核對你來說沒有用處。
它的情況並不少見缺乏經驗的makefile作家寫的東西,如:
final: step1 step2 step3
意味着「建立決賽中,第一個構建第一步,然後第二步,第三步則」。當您使用-j 1
的默認設置運行時,此工作正常,因爲make
恰好按照從左到右的順序構建每個依賴項。但是如果你使用-j 20
(比如說),那麼它會嘗試並行地構建它們。它將嘗試立即開始構建所有3個步驟,而不必先等到每個連續步驟完成。
寫這個正確的方法是:
final: step3
step3: step2
step2: step1
這告訴make
究竟發生了什麼:打造final
首先需要建立step3
,在您需要step2
,爲此,你需要step1
。