现在的位置: 首页 > 综合 > 正文

dlopen错误

2017年09月03日 ⁄ 综合 ⁄ 共 664字 ⁄ 字号 评论关闭

dlopen第三方动态库时经常会发生打开失败的错误,可以适用dlerror()函数查看具体错误:

void *dlh;
dlh = dlopen("libdes3-32.so", RTLD_NOW | RTLD_GLOBAL);
if (dlh == NULL)
{
      printf("dlopen err:%s.\n",dlerror());
}

如果错误信息与ELF格式相关,一般是第三方库的编译环境与本地环境差别所致,如不同的处理器体系结构。

采用file命令可以查看动态库的具体信息:

# file libhsbcpwd.so
libhsbcpwd.so:  ELF 32-位 MSB 动态库 SPARC 版本 1,动态链接,没有除去,无可用的调试信息
# file libdes3-32.so
libdes3-32.so:  ELF 32-位 LSB 动态库 80386 版本 1,动态链接,没有除去,无可用的调试信息

MSB是Most Significant Bit的缩写,最高有效位。在二进制数中,MSB是最高加权位。与十进制数字中最左边的一位类似。通常,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧。 LSB(Least Significant Bit),意为最低有效位;MSB(Most Significant Bit),意为最高有效位,若MSB=1,则表示数据为负值,若MSB=0,则表示数据为正。

SPARC:SUN和TI公司合作开发的RISC微处理器。

80386:INTEL处理器。x86架构是可变指令长度的CISC(复杂指令集计算机,Complex Instruction Set Computer)。

抱歉!评论已关闭.