gpt4 book ai didi

c - extern 关键字显示对我的函数的 undefined reference

转载 作者:行者123 更新时间:2023-11-30 17:36:08 25 4
gpt4 key购买 nike

我的文件中声明了函数 function1 和 function2

include.h 位于/dir1/dir2/dir3/dir4/

我已经定义了

中的所有函数和变量

文件 include.c 位于路径/dir1/dir2/dir3/dir5/

我在路径中使用这些函数

/dir1/drr2/dir3/dir6/

我的伪代码是...

#include "include.h"
extern int function1();
extern void function();
...

function release()
{
int i = function1();
}

编译后抛出以下错误:

undefined reference to 'function1'
relocation truncated to fit: R_MIPS_26 against 'function1'

我知道当我们使用 extern 时,我们必须编译这两个文件,但我目前正在使用 OS161,无法单独编译文件。我必须将所有操作系统文件编译在一起,然后将它们安装到内核中,最后启动它。

哪里错了?

最佳答案

如果您将符号声明为extern,则意味着它将不会在此翻译单元中定义。相反,链接器将在链接时搜索符号,搜索所有目标文件和库,如果找不到,则打印类似这样的错误消息。

您需要确保在链接期间,每个使用 extern 函数的目标文件都将与 include.c 生成的对象链接。

除了全局变量之外,函数默认声明为 extern,因此这不是这里的问题。

要将多个翻译单元编译在一起,只需将它们一次性全部传递给编译器即可。

关于c - extern 关键字显示对我的函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22791467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com