我在构建项目时遇到了一些麻烦。我会尝试在这里重现错误。
我有一个file.c
,我希望使用function()
中声明的header.h
并在header.c
中定义(与{{不在同一目录中) 1}})。
到目前为止非常简单,我在header.h
中添加了#include "header.h"
,在编译器中添加了file.c
选项,因为-I/path/to/header
不在任何其他包含路径中。
我认为这应该足以让链接器找到header.h
的定义,但我仍然会收到错误
function()
现在它变得有点复杂,项目非常大,Undefined reference to 'function'
和file.c
的路径非常不同,我不知道这是否有所不同,因为我包含了完整的编译器的路径。
此外,构建过程首先会生成一个header.h
,与其他人file.o
特别关联,后者与更多.o
链接,生成可执行文件,并且位于使错误发生的可执行文件的基因。
我对部分.o
nm
进行了尝试获取更多信息,.o
显示为未定义,我猜这是预期的,但我不知道为什么链接器无法找到function()
的定义。我不知道我在这里缺少什么......
请帮忙吗?
修改
我知道function()
是在header.c
之前编译的,但如果我只是尝试将file.c
添加到命令行,我会收到另一个错误:
header.o
我想这是因为目录不同,有没有办法给链接器提供No rule to make target 'header.o', needed by 'file.o'
的路径?