如何为c编写一个简单的makefile

Sam*_*hen 1 c makefile

我需要为my.c写一个简单的make文件,等等

make
Run Code Online (Sandbox Code Playgroud)

然后我的程序可以运行

./my
Run Code Online (Sandbox Code Playgroud)

my.c可以通过以下方式编译:

gcc cJ/cJ.c my.c -lcrypto -o my -lm
Run Code Online (Sandbox Code Playgroud)

谢谢我把它放在我的makefile中

all:my
my: cJ.o my.o
 gcc cJ.o -lcrypt my.o -o my
cJ.o: cJ/cJ.c
     gcc -c cJ/cJ.c
my.o: my.c
     gcc -c my.c -lm
Run Code Online (Sandbox Code Playgroud)

请帮忙

NPE*_*NPE 8

这是一个简单的教程,你可以遵循:http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/

一个非常重要的事情make是让标签正确!


pru*_*nat 7

好吧,makefile只是一种特殊的脚本.每个都是独一无二的,对于这样简单的任务,这就足够了:

Makefile文件:

CC=gcc
CFLAGS=-lm -lcrypto
SOURCES=my.c cJ/cJ.c

all: my

my: $(SOURCES)
        $(CC) -o my $(SOURCES) $(CFLAGS)
Run Code Online (Sandbox Code Playgroud)

稍后您可能希望使用一些其他选项(如通配符%.c)来编译多个文件而无需将其写入.

或者:

CC=gcc
CFLAGS=-lm -lcrypto

MY_SOURCES = my.c cJ/cJ.c
MY_OBJS = $(patsubst %.c,%.o, $(MY_SOURCES))

all: my

%o: %.c
    $(CC) $(CFLAGS) -c $<

my: $(MY_OBJS)
    $(CC) $(CFLAGS) $^ -o $@
Run Code Online (Sandbox Code Playgroud)

请注意,每个目标后面的行("my:",...)必须以制表符(\ t)开头,而不是空格.