"未定义的函数引用"即使有包括

时间:2015-03-10 15:31:01

标签: c gcc compilation linker

我在构建项目时遇到了一些麻烦。我会尝试在这里重现错误。

我有一个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' 的路径?

0 个答案:

没有答案