当前位置:首页 » 编程软件 » 多文件编译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 浏览:645
制作脚本网站 发布:2025-10-20 08:17:34 浏览:936
python中的init方法 发布:2025-10-20 08:17:33 浏览:632
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:821
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:731
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1066
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:299
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:160
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:852
python股票数据获取 发布:2025-10-20 07:39:44 浏览:763