首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dlopen中对__dlopen的引用未知

dlopen中对__dlopen的引用未知
EN

Stack Overflow用户
提问于 2011-09-23 16:31:24
回答 2查看 16.4K关注 0票数 11

dlopen位于libdl.a中,但是当我将我的应用程序链接到libdl.a上时,gcc链接器抛出了这个错误:unknow reference to __dlopen called in dlopen

我是否应该导入另一个.a

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-24 00:45:00

当我尝试静态编译dlopen模型程序时,gcc (Archlinux/gcc版本4.6.1 20110819 (预发行版))告诉我:

代码语言:javascript
复制
$ 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/中运行这个脚本时

代码语言:javascript
复制
for i in *.a; 
do 
    echo $i; 
    readelf -a $i | grep __dlopen;
done

我看到:

代码语言:javascript
复制
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足以让应用程序运行,但是

代码语言:javascript
复制
gcc <file> -static -ldl -lc

应该可以解决系统中的问题。

票数 12
EN

Stack Overflow用户

发布于 2011-09-23 16:37:47

您应该能够将共享库libdl.so

代码语言:javascript
复制
gcc -ldl ...

如果您对使用静态版本没有很强的要求。

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

https://stackoverflow.com/questions/7526255

复制
相关文章

相似问题

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