當前位置:首頁 » 編程軟體 » 多文件編譯makefile

多文件編譯makefile

發布時間: 2022-05-25 13:03:25

⑴ 多文件C程序怎麼編譯連接及運行

關於 C 語言源程序的多模塊編譯、連接,這個必須要靠編寫 makefile 文件才行。
而且還必須依照編寫 makefile 的規則編寫,才能夠正確編譯、連接各個 C 語言
源程序,最終執行 make makefile 指令,生成一個可執行程序。
makefile 文件是一個文本文件,其大致內容如下:
myfile1.o: myfile1.c
gcc -c myfile1.c
myfile2.o: myfile2.c
gcc -c myfile2.c
myrunfile: myfile1.o myfile2.o
gcc -o myrunfile myfile1.o myfile2.o

⑵ 如何用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

⑶ 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)

⑷ 需要一個編譯多個c文件的makefile

#$Id:Makefile,v2.02008/10/0818:55:40Update$
prog_name=TEST#目標文件名
######################################
#
#Genericmakefile
#
#byJackieXie
#email:[email protected]
#
#Copyright(c)2008JackieXie
#Allrightsreserved.
#
#Nowarranty,noliability;
#youusethisatyourownrisk.
#
#Youarefreetomodifyand
#distributethiswithoutgiving
#credittotheoriginalauthor.
#
######################################
###Customising
#
#Adjustthefollowingifnecessary;EXECUTABLEisthetarget
#executable"sfilename,
#(e.g.alleg,stdcx,iostr,etc).Youcanoverridetheseonmake"s
#commandlineofcourse,ifyouprefertodoitthatway.
#
EXECUTABLE:=$(prog_name)
LIBS:=#庫文件沒有可不寫
#Nowalteranyimplicitrules"variablesifyoulike,e.g.:
#
CFLAGS:=-g-Wall-O
CXXFLAGS:=$(CFLAGS)
CC:=gcc#編譯器
#
#directory;ifnotitusesdelinstead,butthiscancause(harmless)
#`Filenotfound"errormessages.IfyouarenotusingDOSatall,
#
#files.
#
ifneq($(wildcard$(DJDIR)/bin/rm),)
RM-F:=rm-f
else
RM-F:=del
endif
#Youshouldn".
#
#...................
SOURCE:=$(wildcard*.cpp)$(wildcard*.c)
OBJS:=$(patsubst%.cpp,%.o,$(patsubst%.c,%.o,$(SOURCE)))
DEPS:=$(patsubst%.o,%.d,$(OBJS))
MISSING_DEPS:=$(filter-out$(wildcard$(DEPS)),$(DEPS))
MISSING_DEPS_SOURCES:=$(wildcard$(patsubst%.d,%.cpp,$(MISSING_DEPS))$(patsubst%.d,%.cpp,$(MISSING_DEPS)))
CPPFLAGS+=-MD
.PHONY:
everything:$(EXECUTABLE)
deps:$(DEPS)
objs:$(OBJS)
clean:
@$(RM-F)*.o
@$(RM-F)*.d

veryclean:clean
@$(RM-F)$(EXECUTABLE)
@$(RM-F)*.*~*~
distclean:veryclean
rebuild:verycleaneverything
ifneq($(MISSING_DEPS),)
$(MISSING_DEPS):
@$(RM-F)$(patsubst%.d,%.o,$@)
endif
-include$(DEPS)

$(EXECUTABLE):$(OBJS)
$(CC)-o$(EXECUTABLE)$(OBJS)$(addprefix,$(LIBS))


復制,保存為makefile 文件即可。

⑸ makefile文件怎麼能將位於不同目錄下 的文件一起編譯

test.h不存在是因為你沒有給指定test.h的路徑,因為沒有指定的話頭文件搜索會以這個順序
1,當前目錄
2,系統目錄
所以 你現在有兩個辦法
1,在包含頭文件的時候 以當前目錄開始
也就是說你需要把這里#include "test.h" 改成#include "./math/test.h"
2,在makefile中用 -I來指定搜索目錄
比如makefile中這樣寫 gcc -I ./math ......其他亂七八糟參數

⑹ 大家來幫我看看怎樣寫一個這樣的Makefile文件,通過Makefile文件編譯這個多文件的c語言程序

以下是一個最簡單的多文件+makefile的形式

編譯採用gcc 你可以修改成你的編譯器


三個文件 main.c func.c makefile

main.c

#include<stdio.h>
externvoidfunc();//這個應該放在頭文件中的比如func.h簡單起見就直接聲明了

intmain()
{
func();
}

func.c

#include<stdio.h>

voidfunc()
{
printf("helloworld ");
}

makefile

.PHONY:allmain.ofunc.o

all:main.ofunc.o
@gccmain.ofunc.o-oout
main.o:main.c
@gcc-cmain.c-omain.o
func.o:func.c
@gcc-cfunc.c-ofunc.o

所有的都是最簡單的

⑺ linux下的一個c語言程序代碼寫在4個源文件中,編寫一個makefile用於程序編譯

摘要 CC = gcc

⑻ 用makefile編輯的文件怎麼編譯

我們在linux下進行編程的時候,會發現我們沒有工程文件,然後,我們在不同目錄下
的文件如此雜亂無章,讓我們感到頭疼,怎麼可以把它們進行同步在一起,然後,一起進行編譯呢,
這里,就是我們需要用到的工具了,makefile文件的作用了,makefile可以有效地組織文件和目錄,
把處於不同目錄下的文件進行同時編譯,而不會因為目錄的不同,而有所差別。
這里,我來分享一下makefile的簡單的用法。
1:基本的格式:
magproc:magproc.o dbproc.o
$(EC) -o $(BINPATH)/$@ $? $(LIB)
可執行文件名:鏈接文件
編譯工具 (參數) (鏈接庫) 文件名
2:工程文件Make.defines

3:makefile文件

http://jingyan..com/article/48206aeaf9e82e216ad6b335.html

⑼ 用一個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文件怎麼用,我下了一個程序項目,里邊有很多程序,有一個makefile文件,怎麼編譯它

如果是m(M)kefile命名,直接make即可。

否則make -f (其他名)編譯。

試試。

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:646
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:937
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:633
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:822
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:732
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1067
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:300
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:161
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:853
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:764