Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 符号查找错误未定义符号,但所有符号似乎都存在_Linux_Ld_Elf - Fatal编程技术网

Linux 符号查找错误未定义符号,但所有符号似乎都存在

Linux 符号查找错误未定义符号,但所有符号似乎都存在,linux,ld,elf,Linux,Ld,Elf,可执行文件似乎无法解析链接库中的符号。LD_DEBUG=libs的相关输出显示加载了正确的库: 6557:/usr/lib/libcharon.so.0:错误:符号查找错误:未定义符号:身份验证类名称(致命) /usr/libexec/ipsec/charon:符号查找错误:/usr/lib/libcharon.so.0:未定义的符号:身份验证类名称 nm-D显示符号auth_类_名称已定义: nm-D/usr/lib/libcharon.so.0 | grep auth_class_名称

可执行文件似乎无法解析链接库中的符号。LD_DEBUG=libs的相关输出显示加载了正确的库:

6557:/usr/lib/libcharon.so.0:错误:符号查找错误:未定义符号:身份验证类名称(致命)
/usr/libexec/ipsec/charon:符号查找错误:/usr/lib/libcharon.so.0:未定义的符号:身份验证类名称

nm-D显示符号auth_类_名称已定义:


nm-D/usr/lib/libcharon.so.0 | grep auth_class_名称
身份验证类名称

欢迎提供所有线索和想法

编辑:添加了ldd的输出:

/usr/lib# ldd /usr/lib/libstrongswan.so
    libpthread.so.0 => /lib/arm-linux-gnueabi/libpthread.so.0 (0xb6ecd000)
    libdl.so.2 => /lib/arm-linux-gnueabi/libdl.so.2 (0xb6ec2000)
    librt.so.1 => /lib/arm-linux-gnueabi/librt.so.1 (0xb6eb3000)
    libc.so.6 => /lib/arm-linux-gnueabi/libc.so.6 (0xb6d78000)
    /lib/ld-linux.so.3 (0xb6f25000)
/usr/lib# ldd /usr/lib/libcharon.so
    libm.so.6 => /lib/arm-linux-gnueabi/libm.so.6 (0xb6ea6000)
    libpthread.so.0 => /lib/arm-linux-gnueabi/libpthread.so.0 (0xb6e86000)
    libdl.so.2 => /lib/arm-linux-gnueabi/libdl.so.2 (0xb6e7b000)
    libcap.so.2 => /lib/arm-linux-gnueabi/libcap.so.2 (0xb6e70000)
    libc.so.6 => /lib/arm-linux-gnueabi/libc.so.6 (0xb6d35000)
    /lib/ld-linux.so.3 (0xb6fa6000)
    libattr.so.1 => /lib/arm-linux-gnueabi/libattr.so.1 (0xb6d27000)

# nm -D /usr/lib/libstrongswan.so|grep auth_class
00036a50 D auth_class_names
实际上,“U”表示该符号未定义。ldd在你的
libcharon.so.0上显示了什么
libstrongswan.so.0
是您应该找到身份验证类名称的地方

nm-D显示符号auth_类_名称已定义

否:它表明
libcharon.so
中未定义
auth\u class\u名称

libstrongswan提供auth_类符号,但libcharon不引用它

又错了:
libcharon。所以
引用了符号

ldd/usr/lib/libstrongswan.so

那不是你想要的。您需要
ldd/usr/lib/libcharon.so

您的问题很可能是neigher
libcharon.so
,或者主可执行文件都没有链接到
libstrongswan.so
,因此当您动态加载
libcharon.so
时,
libstrongswan.so
找不到;因此,加载失败,符号未定义

有几种可能的解决方案,从更正确到更老套:

  • 链接
    libcharon.so
    libstrongswan.so
    。加载
    libcharon.so
    将加载其所有依赖项(现在将包括
    libstrongswan.so
    ,并将找到符号)

  • 链接
    charon
    二进制与
    libstrongswan.so

  • 在加载
    libcharon.so
    之前动态加载
    libstrongswan.so
  • LD\u PRELOAD=libstrongswan.so

  • 您好,libstrongswan确实提供了auth_类符号,但libcharon没有引用它…谢谢,您的应用程序和LIB版本错误,这是正确的