我有一個makefile文件,其中的可執行文件對性能非常敏感,並且包含大量內聯asm序列以及一些調用這些序列的C代碼。現在,我們正通過列出所有的C文件在一個單一的編譯/鏈接命令,這樣生成可執行:在一個命令中編譯/鏈接和在單獨的命令中編譯/鏈接有什麼區別?
gcc $(CFLAGS) $(LFLAGS) a.c b.c -o outfile
但是,這需要很長的時間來產生可執行文件。
有沒有分手編譯&鏈接,這樣有什麼區別性能,逐生成的可執行文件(OUTFILE):
gcc $(CFLAGS) -c a.c -o a.o
gcc $(CFLAGS) -c b.c -o b.o
gcc $(LFLAGS) a.o b.o -o outfile
這將加快建設,因爲我們將執行增量構建,我們也可以使用make -j來並行化構建。
順便說一下,我們使用的是gcc 5.1+。
你可能想要研究make和makefiles實際上的想法是什麼。提示:你的第一個變種是完全相反的。而gcc不是鏈接器或構建工具。你的問題既不是gcc也不是C相關的。 – Olaf
謝謝,剛剛編輯。 –
我覺得我原來的帖子很混亂。我剛剛編輯它。可執行文件對性能非常敏感(如果它使可執行文件運行速度較慢,我不想更改構建方法)。我知道我可以通過將構建分解成單獨的步驟來提高構建速度,但我不知道結果可執行文件是否會變慢。 –