c – dlopen中对__dlopen的未知引用

前端之家收集整理的这篇文章主要介绍了c – dlopen中对__dlopen的未知引用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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 

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

猜你在找的Linux相关文章