我需要帮助创建一个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应该是什么样子?
提前谢谢!
因为您试图在执行以下操作时生成可执行文件
bin/v: v.c
cc v.c -o bin/v -Wall
您需要提供flag-c来进行编译,因为v.c不包含任何main,这就是Linker给出错误的原因。用外行的术语来说,Linker&;当需要生成可执行文件时,加载器进入编译的画面
我不知道为什么您会出现这个链接器/加载器错误,可能是您没有提到v.h
和v.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