提问者:小点点

Makefile依赖项


我需要帮助创建一个makefile。

我的文件:

G.C。

V.H

V.C

main()在G.C内部,它包括V.H。

我的Makefile如下所示:

all: bin/v bin/g

bin/v: v.c
    cc v.c -o bin/v -Wall

bin/g: g.c
    cc g.c -o bin/g -D_REENTRANT -lpthread -Wall

PHONY: all

当运行make all时,我会收到大量错误:

重定位X具有无效的符号索引Y

接着是

/usr/lib/gcc/x86_64-linux-gnu/4.8/..../../x86_64-linux-gnu/crt1.o:在函数`_start'中:

(。text+0x20):未定义对“main”集合的引用2:错误:ld返回1退出状态

我的Makefile应该是什么样子?

提前谢谢!


共2个答案

匿名用户

因为您试图在执行以下操作时生成可执行文件

bin/v: v.c
    cc v.c -o bin/v -Wall

您需要提供flag-c来进行编译,因为v.c不包含任何main,这就是Linker给出错误的原因。用外行的术语来说,Linker&;当需要生成可执行文件时,加载器进入编译的画面

匿名用户

我不知道为什么您会出现这个链接器/加载器错误,可能是您没有提到v.hv.c,但这是一个示例,您的Makefile应该看起来像我曾经使用过的一样。

假设您有一个名为folder的目录,并且您已经将所有文件main.c,v.h和v.c放置在该目录中。然后在该目录中按名称makefile创建一个文件。Makefile的内容应如下所示

all: main.out 

main.out: main.c v.o
      gcc -o main.out main.c v.o

v.o:   v.c v.h
     gcc -c v.c 

clean: 
     rm -rf main.out *.o