加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

c – dlopen中对__dlopen的未知引用

发布时间:2020-12-13 19:03:29 所属栏目:Linux 来源:网络整理
导读:dlopen位于libdl.a但是当我将我的应用程序与libdl.a链接时,gcc链接器抛出此错误:在dlopen中调用__dlopen的unknow引用 我应该导入另一个.a? 最佳答案 当我尝试静态编译一个dlopen模型程序时,gcc(Archlinux / gcc版本4.6.1 20110819(预发布))告诉我: $gcc t

dlopen位于libdl.a但是当我将我的应用程序与libdl.a链接时,gcc链接器抛出此错误:在dlopen中调用__dlopen的unknow引用

我应该导入另一个.a?

最佳答案
当我尝试静态编译一个dlopen模型程序时,gcc(Archlinux / gcc版本4.6.1 20110819(预发布))告诉我:

$gcc test.c  -ldl -static  
/tmp/ccsWe4RN.o: In function `main': test.c:(.text+0x13): 
warning: Using 'dlopen' in statically linked applications requires 
at runtime the shared libraries from the glibc version used for linking

事实上,当我在/usr/lib /中运行此脚本时

for i in *.a; 
do 
    echo $i; 
    readelf -a $i | grep __dlopen;
done

我看见:

libc.a
16: 0000000000000080    69 FUNC    GLOBAL DEFAULT    1 __dlopen
000000000000  002300000001 R_X86_64_64       0000000000000000 __dlopen + 0
35: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND __dlopen

所以根据第一行,libc.a确实定义了你缺少的符号.

在我的系统中,gcc test.c -ldl -static足以使应用程序运行,但是

gcc 

应该解决你的系统中的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读