我想制作一个makefile,但我很困惑,我立即需要它。
我有四个文件(.c)一个文件(.h)。其中三个有主,第四个没有。
main.c有主要
readers.c有主要的
writers.c有主
funs.c有 NOT 主
3个文件(包含main)需要funs.c中的函数。
到目前为止,这是我的makefile:
all: read write main
funs.o:funs.c
gcc -o funs funs.c
read:funs.o
gcc -o read readers.c funs.c
write:funs.o writers.c
gcc -o write writers.c funs.c
main:funs.o main.c
gcc -o main main.c funs.c -lpthread
你能帮忙吗?提前谢谢!
答案 0 :(得分:3)
您需要使用
编译funs.ogcc -c -o funs funs.c
-c
选项使gcc不会尝试将文件作为程序链接到main。
答案 1 :(得分:1)
有两个步骤:
例如:
all: a b c
STATIC_LIBS=s.o
s.o: share.c
gcc -c -o $@ $<
a: a.c $(STATIC_LIBS)
gcc $(STATIC_LIBS) -o $@ $<
b: b.c $(STATIC_LIBS)
gcc $(STATIC_LIBS) -o $@ $<
c: c.c $(STATIC_LIBS)
gcc $(STATIC_LIBS) -o $@ $<
答案 2 :(得分:0)
非常感谢大家的帮助。这就是答案:
all:read write main
funs.o:funs.c
gcc -c -o funs funs.c
read:readers.c funs.o
gcc -o read readers.c funs.c
write:writers.c funs.o
gcc -o write writers.c funs.c
main:main.c funs.o
gcc -o main main.c funs.c -lpthread