链接时出现一个undefined reference to 问题,实在不懂为什么

 我来答
搞不来一个名字

2020-11-18 · 我的故事很无聊,但我还想讲一讲!
搞不来一个名字
采纳数:2303 获赞数:9332

向TA提问 私信TA
展开全部
“undefined reference to”的意思是,该函数未定义。
如果使用的是gcc,有以下检查方案:
如果提示未定义的函数是某个库的函数。检查库时候已经安装,并在编译命令中采用-l和-L参数导入库。
如果提示未定义的函数是程序中的函数。检查是否在头文件中声明,是否在编译中有对应的obj文件,检查函数的或者变量的名字是否正确,是否是因为前后拼写不一致造成的。
如果提示未定义的函数是程序中的函数,还有一种很隐蔽的可能:检查改函数的代码的上下文是否有#ifdef或者#ifndef等预编译信息,这也很有可能导致相关代码没有被编译而出现“undefined reference to”提示。
Linux下编译程序时,经常会遇到“undefined reference to XXX” 报错,

这里总结一些可能的原因和解决方案,给需要的朋友:

说道undefined reference error,先提一下Linux gcc链接规则:

链接的时候查找顺序是:

-L 指定的路径, 从左到右依次查找
环境变量 LIBRARY_PATH 指定的路径,使用":"分割从左到右依次查找
/etc/ld.so.conf 指定的路径顺序
/lib 和 /usr/lib (64位下是/lib64和/usr/lib64)
动态库调用的查找顺序:
d的-rpath参数指定的路径, 这是写死在代码中的
ld脚本指定的路径
LD_LIBRARY_PATH 指定的路径
/etc/ld.so.conf 指定的路径
/lib和/usr/lib(64位下是/lib64和/usr/lib64)
野人无事不言L
2017-04-10 · TA获得超过1413万个赞
知道顶级答主
回答量:2242万
采纳率:0%
帮助的人:144.4亿
展开全部
“undefined reference to”的意思是,该函数未定义。
如果使用的是gcc,有以下检查方案:
如果提示未定义的函数是某个库的函数。检查库时候已经安装,并在编译命令中采用-l和-L参数导入库。
如果提示未定义的函数是程序中的函数。检查是否在头文件中声明,是否在编译中有对应的obj文件,检查函数的或者变量的名字是否正确,是否是因为前后拼写不一致造成的。
如果提示未定义的函数是程序中的函数,还有一种很隐蔽的可能:检查改函数的代码的上下文是否有#ifdef或者#ifndef等预编译信息,这也很有可能导致相关代码没有被编译而出现“undefined reference to”提示。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
漠北刀客dcz666
高能答主

2020-11-17 · 致力于成为全知道最会答题的人
知道大有可为答主
回答量:2.1万
采纳率:84%
帮助的人:492万
展开全部
链接时出现一个undefined reference to 问题,实在不懂为什么

神舟船长 LV8
2016-02-02
满意答案

bbss005
LV12
推荐于2018-03-13
“undefined reference to”的意思是,该函数未定义。
如果使用的是gcc,有以下检查方案:
如果提示未定义的函数是某个库的函数。检查库时候已经安装,并在编译命令中采用-l和-L参数导入库。
如果提示未定义的函数是程序中的函数。检查是否在头文件中声明,是否在编译中有对应的obj文件,检查函数的或者变量的名字是否正确,是否是因为前后拼写不一致造成的。
如果提示未定义的函数是程序中的函数,还有一种很隐蔽的可能:检查改函数的代码的上下文是否有#ifdef或者#ifndef等预编译信息,这也很有可能导致相关代码没有被编译而出现“undefined reference to”提示。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式