首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >extern关键字显示对我的函数的未定义引用

extern关键字显示对我的函数的未定义引用
EN

Stack Overflow用户
提问于 2014-04-02 00:22:16
回答 1查看 533关注 0票数 0

我有一个声明了函数function1和function2的文件

include.h in /dir1/dir2/dir3/dir4/

中定义了所有函数和变量

file include.c at path /dir1/dir2/dir3/dir5/

我在path中使用这些函数

/dir1/drr2/dir3/dir6/

我的伪代码是...

代码语言:javascript
复制
#include "include.h"
extern int function1();
extern void function(); 
...

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

编译后抛出以下错误:

代码语言:javascript
复制
undefined reference to 'function1'
relocation truncated to fit: R_MIPS_26 against 'function1'  

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

错误在哪里?

EN

回答 1

Stack Overflow用户

发布于 2014-04-02 00:27:37

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

您需要确保在链接过程中,使用extern函数的每个对象文件都将链接到从include.c生成的对象。

函数,而不是全局变量,默认情况下声明为extern,所以这不是这里的问题所在。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22791467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档