2013-06-26 22 views
0

如果「make -j2」和「make」可以加速製作過程並解決所有制作序列相關的問題?如果「make -j2」和「make」可以加快製作過程並解決所有make序列相關的問題?

有時當我想加快make過程時,我不得不添加-j來做出命令。但是在使用這樣的命令opts後,由於序列無序,某些項目的某些cpp無法成功完成。所以我再次「製造」它,沒有任何指令可以解決這些錯誤。

簡而言之,我使用make -j2來加快make過程並使用make without opts來解決make -j2中發生的問題。所有這些都是爲了加快製作過程。

我的問題是,如果在「make -j2」和「make」之後存在任何問題?

+3

你能告訴我們你的Makefile嗎?只要在Makefile中正確設置了所有的依賴關係,-j2不應該導致任何錯誤。但是,如果Makefile中缺少依賴關係,則可能會發生這樣的情況:對於一個作業而言,依賴項會不定期地被全部填滿,而對於更多作業則會導致錯誤。 – Haatschii

+0

你的意思是說如果make -j2導致錯誤,那make文件就是錯的嗎? – jiafu

+0

很可能,是的。 – Haatschii

回答

1

他們沒有解決任何問題。他們只是兌現你的makefile。如果你的makefile被破壞並且具有不正確的依賴關係,那麼比應用多個進程/線程所做的更不可靠。 (正如你發現的)

你必須花時間確保你的依賴關係是正確佈置的,以便它知道它可以什麼,不能同時編譯,什麼取決於什麼,以及哪些文件在多個編譯單元中共享。

正確完成make -j 1,-j 2和-j 20之間的唯一區別是使用了更多的內核,並且應該更快地完成作業。

作爲進一步的參考,我甚至不把它作爲一個參數。
export MAKEFLAGS="-j 20"基本上在我的環境中。