Linux下使用make命令編譯c原始檔
make命令是GNU的工程化編譯工具,用於編譯眾多相互關聯的原始碼問價,以實現工程化的管理,提高開發效率。
make命令唯一讀取的檔案是Makefile,在較大的專案中,有些檔案沒有編譯有些編譯過,Makefile中指定一定的規則來對整個專案的所有檔案新型編譯,make命令讀取檔案,按照規則編譯未編譯的檔案。
因此使用make命令可以避免使用gcc命令進行繁瑣的執行編譯。
以三個檔案為例:
max.c:
int max(int a,int b)
{
if(a > b){
return a;
}else{
return b;
}
}
min.c:
int min(int a,int b)
{
if(a < b){
return a;
}else{
return b;
}
}
res.h:
int max(int a,int b);
int min(int a,int b);
res.c:
#include <stdio.h>
#include "cal.h"
int main()
{
int a = 99;
int b = 88;
int maxVal = max(a,b);
int minVal = min(a,b);
printf("the max value is %d\nthe min value is %d\n",maxVal,minVal);
return 0;
}
在res.c中引用了兩個max和min,分別計算兩個整型的最大和最小值
如果不使用make命令,列印res.c的最終結果需要執行步驟:
先分別編譯max.c和min.c為max.o和min.o檔案;
再編譯res.c生成可執行檔案,然後執行可執行檔案即可得到結果。
使用make命令編譯過程:
1.建立並編輯Makefile檔案
規則格式為:
<生成可執行二進位制檔名>:<引入的.o檔案1> <引入的.o檔案2> <c原始檔>
<gcc執行命令>
# this is a make file
res.out:max.o min.o
gcc max.o min.o res.c
max.o:max.c
gcc -c max.c
min.o:min.c
gcc -c min.c
執行命令如下:
ming@ming-TM1604:/home/wwwroot/test/c$ vim Makefile
ming@ming-TM1604:/home/wwwroot/test/c$ ls
cal.h Makefile max.c min.c res.c
ming@ming-TM1604:/home/wwwroot/test/c$ make
gcc -c max.c
gcc -c min.c
gcc max.o min.o res.c -o res.out
ming@ming-TM1604:/home/wwwroot/test/c$ ls
cal.h Makefile max.c max.o min.c min.o res.c res.out
ming@ming-TM1604:/home/wwwroot/test/c$ ./res.out
the max value is 99
the min value is 88
ming@ming-TM1604:/home/wwwroot/test/c$
最終make工具會根據Makefile的規則執行所有的編譯,並根據引用對未編譯的引用檔案進行編譯。
注:Linux若沒有自帶make工具,則需要進行安裝,使用make -v可以檢視版本
apt-get install make
make -v
相關文章
- 如何在Windows下使用make編譯MakefileWindows編譯
- 在使用make編譯時,修改原始檔的註釋內容,是否會重新編譯?編譯
- 命令列下編譯多個C/CPP檔案命令列編譯
- Linux下c mysql程式的編譯命令(轉)LinuxMySql編譯
- 【C語言】linux下多檔案編譯C語言Linux編譯
- windows 下編譯c檔案Windows編譯
- 例解 Linux 下 Make 命令Linux
- caffe make 編譯編譯
- Make編譯之編譯32bit ffmpeg編譯
- Linux下的C/C++編譯環境配置LinuxC++編譯
- 附錄B Linux 下編譯 C 程式Linux編譯
- 在命令列下使用vs的編譯器命令列編譯
- linux下基於官方原始碼編譯ipoptLinux原始碼編譯
- C編譯器LEX 和 YACC輸入原始檔。 (轉)編譯
- Linux下C語言編譯的問題LinuxC語言編譯
- C語言 Make命令教程C語言
- 如何用在命令列下使用VS編譯器命令列編譯
- Linux make命令介紹Linux
- Linux下通過原始碼編譯安裝程式Linux原始碼編譯
- windows 下c++編譯WindowsC++編譯
- gcc 編譯多個原始檔GC編譯
- LevelDB C++教程: Linux下編譯與安裝C++Linux編譯
- Linux/Unix環境下的make命令詳解(轉)Linux
- PHP編譯,執行make報錯PHP編譯
- 編譯核心make dep 的意思(轉)編譯
- 配置C#命令列編譯器C#命令列編譯
- 使用CMake命令編譯Android平臺下的包編譯Android
- Linux make編譯報錯:undefined reference to `vtable for XXX 'Linux編譯Undefined
- Linux下原始碼編譯方式安裝MySQL5.5Linux原始碼編譯MySql
- 用Make編輯linux核心Linux
- 反編譯APK資原始檔與原始碼編譯APK原始碼
- Android 原始碼中的編譯命令Android原始碼編譯
- 使用makefile編譯c程式編譯C程式
- 使用make命令建立Service類
- linux下的gcc編譯LinuxGC編譯
- LINUX下編譯TriangleLinux編譯
- 原始碼的下載與編譯原始碼編譯
- c語言多檔案編譯C語言編譯