C中的Makefile获取可执行文件

时间:2014-10-25 16:55:02

标签: c makefile

如何获得我的C程序的makefile,它将构建/编译我的程序并生成一个 可执行。这位执行官应该能够运行我的c程序???

2 个答案:

答案 0 :(得分:2)

将makefile另存为makefileMakefile

.PHONY: all
all : progname
progname: all-objects
  1. .PHONY将目标all标记为不是文件目标
  2. all是第一个默认目标,取决于progname(只是make all有效)
  3. progname取决于所有对象文件,因此会将它们链接在一起。
  4. 使用内置规则构建对象文件。
  5. 如果要覆盖规则的默认操作,请编写自己的配方 每个命令行必须缩进一个选项卡(不要使用空格)。

    GNU make的参考:http://www.gnu.org/software/make/manual/make.html
    内置规则的参考:https://www.gnu.org/software/make/manual/html_node/Catalogue-of-Rules.html

答案 1 :(得分:0)

使用此内容在同一路径上创建名为Makefile的文件:

CC = gcc
CFLAGS = -std=c99 -pedantic -Wall
OBJECTS = filename.o

all: appname

filename.o: filename.c
    $(CC) $(CFLAGS) -c filename.c

appname: $(OBJECTS)
    $(CC) $(OBJECTS) -o appname

注意:必须有一个"标签"

之前(不是空格)
$(CC) $(CFLAGS) -c filename.c

$(CC) $(OBJECTS) -o appname

然后运行:

make

编辑:一个例子:

david@debian:~$ cat demo.c
#include <stdio.h>

int main(void) 
{
    return 0;
}

david@debian:~$ cat Makefile
CC = gcc
CFLAGS = -std=c99 -pedantic -Wall
OBJECTS = demo.o

all: demo

demo.o: demo.c
    $(CC) $(CFLAGS) -c demo.c

demo: $(OBJECTS)
    $(CC) $(OBJECTS) -o demo

david@debian:~$ make
gcc -std=c99 -pedantic -Wall -c demo.c
gcc demo.o -o demo