C 生成文件创建

C 生成文件创建,c,makefile,C,Makefile,我想制作一个makefile,但我太困惑了,我需要它立即 我有四个文件(.c)和一个文件(.h)。其中三个有主管道,第四个没有 main.c有main c有主要功能 c有主要功能 funs.c具有非主 其中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.

我想制作一个makefile,但我太困惑了,我需要它立即

我有四个文件(.c)和一个文件(.h)。其中三个有主管道,第四个没有

main.c有main

c有主要功能

c有主要功能

funs.c具有

其中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

你能帮忙吗?提前谢谢

您需要使用

gcc -c -o funs funs.c

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

您需要使用

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

有两个步骤:

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

    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 $@ $<
    
    all:abc
    静态_LIBS=s.o
    s、 o:分享
    gcc-c-o$@$<
    a:a.c$(静态自由库)
    gcc$(静态库)-o$@$<
    b:b.c$(静态自由行)
    gcc$(静态库)-o$@$<
    c:c.c$(静态自由库)
    gcc$(静态库)-o$@$<
    
  • $@是目标
  • $<是第一个依赖对象
  • 有两个步骤:

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

    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 $@ $<
    
    all:abc
    静态_LIBS=s.o
    s、 o:分享
    gcc-c-o$@$<
    a:a.c$(静态自由库)
    gcc$(静态库)-o$@$<
    b:b.c$(静态自由行)
    gcc$(静态库)-o$@$<
    c:c.c$(静态自由库)
    gcc$(静态库)-o$@$<
    
  • $@是目标
  • $<是第一个依赖对象

  • 谢谢大家的帮助。答案是:

    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
    

    谢谢大家的帮助。答案是:

    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
    

    我仍然得到这个错误:gcc-o-c funs funs.c gcc:error:funs:没有这样的文件或目录生成:**[funs.o]错误1我仍然得到这个错误:gcc-o-c funs funs.c gcc:error:funs:没有这样的文件或目录生成:**[funs.o]错误1