第一: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...