Makefile依赖

时间:2016-05-18 11:16:13

标签: c linux 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'的未定义引用 collect2:错误:ld返回1退出状态

我的Makefile应该是什么样的?

提前致谢!

2 个答案:

答案 0 :(得分:3)

我不知道你为什么会收到这个链接器/加载器错误,可能你没有提到v.h v.c但这是你的Makefile看起来像我以前使用的样本一旦。

考虑您有一个目录名folder,并且已将所有文件main.c , v.h and 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 

答案 1 :(得分:1)

因为您正在尝试在执行时生成可执行文件

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

你需要提供标志-c才能编译,因为v.c不包含任何主要的链接器给出错误的原因。 通俗地说, 链接器和当然后需要生成可执行文件

时,加载器进入编译的图像