编译以下程序
#includeint main(void) { printf ("Hello from your first program!\n"); return 0; }
a)-by使用Makefile类型的文件
b) - 可执行文件将命名为Hello
"请帮忙做一个练习.我知道如何在CodeBlocks中做到这一点,但我不知道Makefile是什么以及如何在Linux中编写它.我使用命令"gcc filename.c"编译它,随后"./ a.out"但我仍然不明白Makefile是什么.它是一种shell脚本,一条指令吗?这个任务的Makefile如何看起来如此?提前感谢:)"
这是你的hello程序的简单make文件.
CC = gcc CFLAGS = -g RM = rm -f default: all all: Hello Hello: Hello.c $(CC) $(CFLAGS) -o Hello Hello.c clean veryclean: $(RM) Hello
假设你有两个makefiles
在一个目录中命名makefile.m1
,makefile.m2
如果你想构建两个make文件,那么请使用以下命令
make -f makefile.m1 make -f makefile.m2
或使用Makefile
包含以下内容的单曲
m1: make -f makefile.m1 m2: make -f makefile.m2
并使用make m1
或make m2
现在让我们清楚你对make文件名称的疑问一定不要求 Makefile
您可以根据需要为makefile命名.假设我想给出名字myfirstmakefile.mk
.要在以后使用它,你需要告诉make你想要什么makefile.使用-f选项:
make -f myfirstmakefile.mk
而且再次宣告也不.mk
是你可以使用你想要的任何东西,但永远不会忘记使用-f
选项.
所以这对你有意义.
一个makefile文件是为配方make
效用如何创建一些文件(称为目标使用一组由shell中运行命令的一些其他文件(称为依赖)).makefile通常如下所示:
target: dependency [...] command1 command2
尝试运行man make
详细信息.
现在为您的任务,实际上不需要Makefile,因为make
内置规则知道如何编译一个简单的程序.您需要做的就是将C源放在一个以可执行文件名(Hello
)和.c
扩展名命名的文件中,即Hello.c
.
那么简单
$ make Hello cc Hello.c -o Hello
做一切.如果你想使用gcc而不是cc,你可以运行
$ rm Hello $ make CC=gcc Hello gcc Hello.c -o Hello
如果你告诉你的导师/老师/教授你需要一个空的makefile,因为你知道内置的规则是正确的,你会得到一些额外的功劳,也许你的导师已经学到了新东西:-)如果你要求提供参考,您可以引用制作手册的相关部分,或者像专业人士一样,从制造实用程序的POSIX标准引用默认规则部分.