Linux编译link时提示undefined reference’dlclose’怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux编译link时提示undefined reference’dlclose’怎么办相关的知识,希望对你有一定的参考价值。

参考技术A  在Linux系统下编译link时出现了错误,提示“undefined
reference’dlclose@xxx函数”错误,相信不少用户也遇到这个问题,这个问题不难解决,下面小编给大家介绍下undefined
reference错误的解决方法。
  编译完link的时候,报了一句undefined
reference’dlclose@xxx函数‘,找主程过来看了下,说是dl库没有包进去,查了下dl库是用来做动态库加载的(dynamic
load),项目用到了libmysqld.so,加了之后还是有问题,将-ldl链接选项改到最后才可以。
  比较常见的undefined
reference问题:
  1.dl库
  undefined
reference
to
‘dlerror’
  undefined
reference
to
‘dlopen’
  undefined
reference
to
‘dlerror’
  增加-ldl链接选项
(-l是链接选项的前缀)
  2.pthread库
  undefined
reference
to
‘pthread_create’
  undefined
reference
to
‘pthread_xxxx‘
  增加-lpthread链接选项
  3.rt库
  undefined
reference
to
`clock_gettime’
  增加-lrt链接选项
  如果是使用codeblocks,可以再link
option里加,不过因为依赖顺序的问题,如果link
option里加了还是报错,直接在link
file里添加pthread
dl
rt等即可
  如果是你自己的库出现这undefined
reference什么函数,先去查下库的源代码,看看具体问题。
  上面就是Linux编译link出错的解决方法介绍了,本文除了介绍link出错外,还总结了一些undefined
reference问题,希望对你有所帮助。

Linux编译C语言时出错 /home/zwlong/222/LESduct2.c:323: undefined reference to `sqrt'

Linux编译C语言时出错 /home/zwlong/222/LESduct2.c:321: undefined reference to `sqrt' /home/zwlong/222/LESduct2.c:323: undefined reference to `pow' /home/zwlong/222/LESduct2.c:325: undefined reference to `sqrt' /home/zwlong/222/LESduct2.c:332: undefined reference to `sqrt'

参考技术A undefined
reference未定义的引用,指的是编译器在链接的时候没有找到相应函数的原型。缺少相应的头文件,因为头文件中定义了函数的原型。
加上#include
试试。
参考技术B 使用man
3
sqrt查看这个sqrt出自什么地方啊!
#include
undefined
reference表示这个函数不能链接,亦即没有定义,要么自己重新定义,要么链接到系统的函数库。
参考技术C sqrt
应该是数学库里的东东,你在那函数前面得加上
#include

以上是关于Linux编译link时提示undefined reference’dlclose’怎么办的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核proc模块时遇到create_proc_read_entry函数undefined的情况应该怎么办?

Linux C语言编译报错:undefined reference to `sem_init‘(编译时加 -lpthread)

Linux C语言编译报错:undefined reference to `sem_init‘(编译时加 -lpthread)

Linux编译C语言时出错 /home/zwlong/222/LESduct2.c:323: undefined reference to `sqrt'

qt undefined reference to linux

GCC编译连接问题stl_algobase.h:343: undefined reference to