/* main.c */
#include
"mytool1.h"
#include
"mytool2.h"
intmain
(int argc,
char
**ar**)
/* mytool1.h */
#ifndef _mytool_1_h
#define _mytool_1_h
void
mytool1_print
(char
*print_str)
;#endif
/* mytool2.h */
#ifndef _mytool_2_h
#define _mytool_2_h
void
mytool2_print
(char
*print_str)
;#endif
/* mytool1.c */
#include
"mytool1.h"
#include
void
mytool1_print
(char
*print_str)
/* mytool2.c */
#include
"mytool2.h"
#include
void
mytool2_print
(char
*print_str)
由於這個程式很短,我們可以這樣編譯:
$ gcc -c main.c -o main.o
$ gcc -c mytool1.c -o mytool1.o
$ gcc -c mytool2.c -o mytool2.o
$ gcc -o main main.o mytool1.o mytool2.o
但如果我們要重複修改檔案內容,難道要多次編譯?這個時候便產生了makefile來解決這個問題:
1、makefile 完整形式:
main:main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o
main.o:main.c mytool1.h mytool2.h
gcc -c main.c -o main.o
mytool1.o:mytool1.c mytool1.h
gcc -c mytool1.c -o mytool1.o
mytool2.o:mytool2.c mytool2.h
gcc -c mytool2.c -o mytool2.o
2、makefile 引數化簡形式:
main:main.o mytool1.o mytool2.o
gcc -o $@ $^
main.o:main.c mytool1.h mytool2.h
gcc -c $<
-o $@
mytool1.o:mytool1.c mytool1.h
gcc -c $<
-o $@
mytool2.o:mytool2.c mytool2.h
gcc -c $<
-o $@
3、makefile 預設化簡形式:
main:main.o mytool1.o mytool2.o
gcc -o $@ $^
..c.o:
gcc -c $<
4、執行makefile
$ make
linux makefile檔案分析
cflags wall wstrict prototypes g fomit frame pointer ffreestanding all crt0.s leds.c arm linux gcc cflags c o crt0.o crt0.s arm linux gcc cflags c o l...
linux makefile檔案心得筆記
經過長時間學習linux makefile檔案,我針對乙個簡單的例項進行了對linux makefile檔案的總結 於是和大家分享一下,看完本文你肯定有不少收穫,希望本文能教會你更多東西。sample makefile edit main.o kbd.o command.o display.o 第一...
linux makefile檔案管理工程
make在執行時,需要乙個命名為makefile的檔案.make廢了檔案描述了整個工程編譯,鏈結的規則.其中包括 工程中的哪些原始檔需要編譯以及如何編譯 需要建立哪些庫檔案以及如何建立這些庫檔案 如何最後產生我們想要得可執行檔案.這就是乙個規則 targets prerequisites comma...