Linux下C多檔案編譯Makefile

2021-06-26 21:17:36 字數 1560 閱讀 6225

第一:makefile檔案編寫| 

1.第乙個字母大寫,其餘的都是小寫。| 

2.makefile關係到了整個工程的編譯。| 

3.可以執行作業系統的命令。| 

4.其實makefile的本質是定義了檔案之間的依賴性問題。| 

5.第乙個字母大寫,其餘的都是小寫。| 

make命令執行時,需要乙個 makefile 檔案,以告訴make命令需要怎麼樣的去編譯和鏈結程式。 

第二:   例子 

1.我們使用gcc來編譯多個原始檔時,使用執行多條命令,但是使用make命令就不一 

樣了,見下面 

2.編寫makefile檔案 

main:one.o two.o three.o  

gcc one.o two.o three.o –o main  

one.o:one.c  

gcc -c one.c   

two.o:two.c  

gcc -c two.c   

three.o:three.c  

gcc -c three.c 

clean: 

rm one.o two.o three.o //使用make clean 刪除中間檔案 

第三:總結 

總結一下makefile的規則: 

[c-sharp] view plaincopy 

target ... : prerequisites ...    

command   

...  

...  

target也就是乙個目標檔案,可以是object file,也可以是執行檔案。還可以是 

乙個標籤(label)。 

prerequisites就是要生成那個target所需要的檔案或是目標。 

command也就是make需要執行的命令。(任意的shell命令) 

這是乙個檔案的依賴關係,也就是說,target這乙個或多個的目標檔案依賴於 

prerequisites中的檔案,其生成規則定義在command中。說白一點就是說,    

prerequisites中如果有乙個以上的檔案比target檔案要新的話,command所定 

義的命令就會被執行。這就是makefile的規則。也就是makefile中最核心的內容。 

第四:make命令工作過程總結 

1、make會在當前目錄下找名字叫「makefile」的檔案。 

2、如果找到,它會找檔案中的第乙個目標檔案(target),並把這個檔案作為最 

終的目標檔案。像上面的例子為file 

3、如果file檔案不存在,或是file所依賴的後面的 .o 檔案的檔案修改時間要比 

file這個檔案新,那麼,他就會執行後面所定義的命令來生成file這個檔案。 

4、如果file所依賴的.o檔案也不存在,那麼make會在當前檔案中找目標為.o檔案 

的依賴性,如果找到則再根據那乙個規則生成.o檔案。 

5、當然,你的c檔案和h檔案是存在的啦,於是make會生成 .o 檔案,然後再用 .o 

檔案生命make的終極任務,也就是執行檔案file了。

C語言 linux 下多檔案編譯

在linux下,用命令編譯 使用 gcc c file.c 命令會生成乙個相應的 file.o。編譯完所有的.c檔案之後,使用命令 gcc a.o b.o c.o o main 會在當前目錄下生成乙個linux可執行檔案 再使用 main 命令即可執行該c程式 以之前的簡單鍊錶為例 root izw...

如何加速Linux下的編譯速度(加速make)

專案越來越大,每次需要重新編譯整個專案都是一件很浪費時間的事情。research了一下,找到以下可以幫助提高速度的方法,總結一下。有人說在windows下用了ramdisk把乙個專案編譯時間從4.5小時減少到了5分鐘,也許這個數字是有點誇張了,不過粗想想,把檔案放到記憶體上做編譯應該是比在磁碟上快多...

Linux 下Fortran多檔案編譯

或者ifort o exe name main.f90 fun.f90 方法二 在主程式main.f90 中加入include fun.f90 語句,然後在linux下用fortran命令編譯,命令如下 ifort o exe name main.f90 方法三 分步驟編譯,命令如下 ifort c...