[英]how to write a simple makefile for c
我需要为my.c编写一个简单的make文件,之后
make
然后我的程序可以通过
./my
my.c可以通过以下方式进行编译:
gcc cJ/cJ.c my.c -lcrypto -o my -lm
谢谢,我把这个放在我的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
请帮助
在这里,您可以按照以下简单教程进行操作: http : //www.cs.colby.edu/maxwell/courses/tutorials/maketutor/
make
一项非常重要的事情是正确设置标签!
好吧,makefile只是一种特殊的脚本。 每个都是唯一的,对于这样简单的任务,这已经足够了:
生成文件:
CC=gcc
CFLAGS=-lm -lcrypto
SOURCES=my.c cJ/cJ.c
all: my
my: $(SOURCES)
$(CC) -o my $(SOURCES) $(CFLAGS)
稍后,您可能需要使用其他一些选项(例如通配符%.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 $@
请注意,每个目标(“ my:”,...)之后的行必须以制表符(\\ t)开头,而不是空格。
只是一个小小的修正:将-lm
放在链接步骤,然后放在所有目标文件之后。
all: my
my: cJ.o my.o
gcc cJ.o my.o -o my -lcrypt -lm
cJ.o: cJ/cJ.c
gcc -c cJ/cJ.c
my.o: my.c
gcc -c my.c
然后,您可以使用自动变量进行更多操作:
all: my
my: cJ.o my.o
gcc $^ -o $@ -lcrypt -lm
cJ.o: cJ/cJ.c
gcc -c $^
my.o: my.c
gcc -c $^
其中$@
是当前规则的目标,而$^
是前提。
您的程序的简单make文件是
build :
gcc /your_full_path_to_c_file/cJ.c my.c -lcrypto -o my -lm
只需将其复制到一个文件中,将该文件的名称保留为makefile然后作为make build
运行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.