MakeFile创建

时间:2014-03-06 13:59:04

标签: c makefile

我想制作一个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
你能帮忙吗?提前谢谢!

3 个答案:

答案 0 :(得分:3)

您需要使用

编译funs.o
gcc -c -o funs funs.c

-c选项使gcc不会尝试将文件作为程序链接到main。

答案 1 :(得分:1)

有两个步骤:

  1. 创建用于链接的静态库
  2. 创建每个二进制文件
  3. 例如:

    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 $@ $<
    
    1. $ @是目标
    2. $&LT;是第一个依赖对象

答案 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