生成文件链接问题

Makefile linking issues

本文关键字:问题 链接 文件      更新时间:2023-10-16

我编写Makefile是为了更容易地运行单元测试(默认目标是test)。目录结构如下:

lib - google c++测试框架

src -源文件

test -单元测试

src中,我有文件a.h, a.cc, b.cc(保存main),我想测试在a.h中定义的A()类。总之,因为链接的顺序是:

g++ -Wall -c -o obj/src/a.o src/a.cc

g++ -Wall -c -o obj/src/b.o src/b.cc

g++ -o all obj/src/a.o

我得到错误:

(.text+0x18): undefined reference to main' collect2: ld returned 1 exit status make: *** [all] Error

即使我实际上不需要在src中定义的main(),因为我已经在test中定义了运行单元测试的main()

我不太明白你想做什么,但如果你的主要是在,说,测试。你需要在链接行中指定它。例如:

g++ -o all obj/src/a.o test.o

当你说

g++ -o all obj/src/a.o

g++认为您已经要求它构建可执行文件,因此正在寻找入口点。大概你是想问它别的东西(一个库,也许?)。

即使它不能解决您当前的问题,但知道您正在重新设计automake可能会有所帮助。现在你不应该为C或c++项目手工编写makefile。