共享库未定义符号
Shared Library undefined symbol
存在类似标题问题,但不是同一个问题。
我有两台机器,一台装有 CentOS 7.3.1611,另一台装有类似于 CentOS 的机器,你可以说 custom RedHat .
我有一个 SDK,我需要在自定义机器上 运行 但它没有 yum gcc.
所以我不得不在 CentOS 上编译和安装 SDK,之后我将结果复制到自定义机器(共享库、脚本、二进制文件......)以便 运行 它们在那里。
当然,SDK 在 CentOS 上运行良好,但在自定义机器上加载一些驱动程序和其他库时正常,加载特定库时出现错误,如下所示:
dlopen (libsdkpolicerlib.so) failed: (/usr/local/bin/../lib/libsdkpolicer.so.1: undefined symbol: policer_validate_packet_type)
注意这里涉及三个共享 object:
- libsdkpolicerlib.so dlopen 尝试打开的
- libsdkpolicer.so.1
- libpolicercomlib.so 包含符号 policer_validate_packet_type
所有共享 object 都在同一目录中 /usr/local/lib .
libpolicercomlib.so 实际上包含符号 。
我有:
- 已验证 ld.so.cache 包含上述所有库。
- 我还添加了 /usr/local/lib 到 LD_LIBRARY_PATH 变量。
- 使用路径“-n”执行了 ldconfig ...
我知道这不是执行此类操作的最佳方法,但此解决方案是临时的。
我的问题是我还需要验证什么才能使其正常工作?
我在这里错过了什么?
你可以用ldd命令查看/lib/libsdkpolicer.so.1,也许你复制的libpolicercomlib.so文件只是一个link文件,不用yum在你的机器上查看海湾合作委员会。如果一切正常,你可以将/lib64/ld-linux-x86-64.so.2 loader从你的complie机器复制到你的新机器(之前备份)并尝试。
存在类似标题问题,但不是同一个问题。
我有两台机器,一台装有 CentOS 7.3.1611,另一台装有类似于 CentOS 的机器,你可以说 custom RedHat .
我有一个 SDK,我需要在自定义机器上 运行 但它没有 yum gcc.
所以我不得不在 CentOS 上编译和安装 SDK,之后我将结果复制到自定义机器(共享库、脚本、二进制文件......)以便 运行 它们在那里。
当然,SDK 在 CentOS 上运行良好,但在自定义机器上加载一些驱动程序和其他库时正常,加载特定库时出现错误,如下所示:
dlopen (libsdkpolicerlib.so) failed: (/usr/local/bin/../lib/libsdkpolicer.so.1: undefined symbol: policer_validate_packet_type)
注意这里涉及三个共享 object:
- libsdkpolicerlib.so dlopen 尝试打开的
- libsdkpolicer.so.1
- libpolicercomlib.so 包含符号 policer_validate_packet_type
所有共享 object 都在同一目录中 /usr/local/lib .
libpolicercomlib.so 实际上包含符号 。
我有:
- 已验证 ld.so.cache 包含上述所有库。
- 我还添加了 /usr/local/lib 到 LD_LIBRARY_PATH 变量。
- 使用路径“-n”执行了 ldconfig ...
我知道这不是执行此类操作的最佳方法,但此解决方案是临时的。
我的问题是我还需要验证什么才能使其正常工作?
我在这里错过了什么?
你可以用ldd命令查看/lib/libsdkpolicer.so.1,也许你复制的libpolicercomlib.so文件只是一个link文件,不用yum在你的机器上查看海湾合作委员会。如果一切正常,你可以将/lib64/ld-linux-x86-64.so.2 loader从你的complie机器复制到你的新机器(之前备份)并尝试。