makefile編譯多個可執行文件
① 如何用makefile編譯多個c文件
假設有下面幾個c++文件:
wherewhen.h
wherewhen.c
countdown.h
countdown.c
包含了math.h,
需要連接庫文件
main.c
主函數,
main.c
包含了兩個頭文件
wherewhen.h
and
countdown.h
1、第一種編譯方法:
g++
-Wall
-g
wherewhen.c
countdown.c
main.c
-lm
-o
myprogram
生成可執行文件myprogram
2、第二中編譯方法,
分別編譯各個文件:
g++
-Wall
-g
-c
wherewhen.c
g++
-Wall
-g
-c
countdown.c
g++
-Wall
-g
-c
main.c
g++
-g
wherewhen.o
countdown.o
main.o
-lm
-o
myprogram
② UNIX下 用CC如何編譯多個c語言源程序文件
用makefile啊,用makefile可以很方便地編譯多個源文件的程序。unix下都是用這個的。
③ 如何用一個makefile編譯多個目標
假設有下面幾個c++文件:
wherewhen.h wherewhen.c
countdown.h countdown.c 包含了math.h, 需要連接庫文件
main.c 主函數, main.c 包含了兩個頭文件 wherewhen.h and countdown.h
1、第一種編譯方法:
g++ -Wall -g wherewhen.c countdown.c main.c -lm -o myprogram
生成可執行文件myprogram
2、第二中編譯方法, 分別編譯各個文件:
g++ -Wall -g -c wherewhen.c
g++ -Wall -g -c countdown.c
g++ -Wall -g -c main.c
g++ -g wherewhen.o countdown.o main.o -lm -o myprogram
④ gcc多文件編譯 三個文件:tree.c tree_fun.c tree.h 我怎麼把他們編譯成一個可執行文件
寫一個Makefile文件,如下:
SOURCE = tree.c tree_fun.c
DEST = main
GCC = gcc
FLAGS =
all:
$(GCC) $(SOURCE) $(FLAGS) -o $(DEST)
這樣就可以直接make,可以編譯這三個文件了,編譯成的可執行文件是main
⑤ 編寫編譯規則文件Makefile,並通過make生成可執行文件
multiple:main.o multiple.o
cc $< -o $@
%.o:%.c
clean:
rm *.o multiple
⑥ 用一個makefile編譯出多個文件
使用 .PHONY, 使用方法見下面描述或參考鏈接. 經過測試可行.
---------
phony 目標可以有依賴關系。當一個目錄中有多個程序,將其放在一個makefile 中會更方便。因為預設目標是makefile 中的第一個目標,通常將這個phony 目標叫做"all",其依賴文件為各個程序:
all : prog1 prog2 prog3
.PHONY : all
prog1 : prog1.o utils.o
cc -o prog1 prog1.o utils.o
prog2 : prog2.o
cc -o prog2 prog2.o
prog3 : prog3.o sort.o utils.o
cc -o prog3 prog3.o sort.o utils.o
這樣,使用"make"將可以將三個程序都生成了。d
當一個phony 目標是另一個的依賴,其作用相當於子程序,例如:
.PHONY: cleanall cleanobj cleandiff
cleanall : cleanobj cleandiff
rm program
cleanobj :
rm *.o
cleandiff :
rm *.diff
----------
我測試的Makefile:
OBJS=main.o sub.o
all : test sam
.PHONY:all
test : $(OBJS)
gcc -o test $(OBJS)
sam : sam.o
gcc -o sam sam.o
main.o : main.c sub.h
gcc -c main.c
sub.o : sub.c sub.h
gcc -c sub.c
sam.o : sam.c
gcc -c sam.c
⑦ 怎麼通過makefile生成多個可執行文件
all:main1 main2
main1:
gcc -o main1 main1.o
main1.o:main1.c
gcc -c main1.o main1.c
main2:
gcc -o main2 main2.o
main2.o:main2.c
gcc -c main2.o main2.c
最後生成main1 ,main2 2個可執行文件,答案還滿意嗎?
⑧ 怎麼編譯三個源文件是它在Ubuntu中可以鏈接成一個可執行目標文件
在 UNIX/Linux 系統下面,關於編譯多個 C 語言源程序(*.c)的方法,可以編寫一個 Makefile 文件,該文件是一個文本文件,但是必須要按照一定的規則編寫才能夠最終生成可執行文件。
⑨ c多個文件如何編譯
關於整個 C 語言中的主函數 main( ) 如何調用相關的頭文件(*.h)、以及調用其它獨立的模塊(*.c)的方法,關鍵在於對於如何編寫 makefile 文件的真正理解、以及真正掌握編寫規則。
由於我已經有很多年沒有編寫過 C 語言源程序、以及編寫 makefile 文件了,但是可以大概給你提供一個思路就是:
下面的文本文件假設以 my_makefile 為例,編譯環境為 Linux 系統,C 語言編譯器為 gcc。
但是在這里注意一點:我的 my_makefile 文件中的注釋語句是否是分號進行注釋,我已經不太記得了,這個需要自己再參考一下。
另外就是:對源文件(*.c)、以及生成可執行文件(my_runfile)在 my_makefile 文件中的前後次序,我也記不清了,僅供參考。
myprog1.o: myprog1.c ; myprog1.o 的生成依賴於 myprog1.c 這個源程序
gcc -c myprog1.c ; 使用 Linux 系統的 C 語言編譯器對 myprog1.c 只編譯、不鏈接
myprog2.o: myprog2.c ; myprog2.o 的生成依賴於 myprog2.c 這個源程序
gcc -c myprog2.c ;使用 Linux 系統的 C 語言編譯器對 myprog2.c 只編譯、不鏈接
my_runfile: myprog1.o myprog2.o ; 可執行文件 my_runfile 的生成依賴於 myprog1.o、myprog2.o 這兩個目標文件
gcc -o my_runfile myprog1.o myprog2.o ; 使用 cc 的 -o 選項生成用戶自定義的可執行文件:my_runfile,如果不指定 -o 選項,cc 編譯器生成的預設可執行文件名為:a.out
運行命令為:
$make -f my_makefile (使用 -f 選項代替預設的 make 文件名 makefile)