加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

在Linux中使用LD_PRELOAD混合64位/ 32位环境

发布时间:2020-12-13 23:52:29 所属栏目:Linux 来源:网络整理
导读:我想设置LD_PRELOAD指向一个共享库,我可以运行64位或32位应用程序.很明显,共享库和可执行文件必须匹配bit-ness. $LD_PRELOAD=/lib64/lib_init.so ./hello32ERROR: ld.so: object '/lib64/lib_init.so' from LD_PRELOAD cannot be preloaded (wrong ELF class
我想设置LD_PRELOAD指向一个共享库,我可以运行64位或32位应用程序.很明显,共享库和可执行文件必须匹配bit-ness.

$LD_PRELOAD=/lib64/lib_init.so ./hello32
ERROR: ld.so: object '/lib64/lib_init.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored

其中hello32是32位应用程序.世界上有一些页面说我应该能够:

$LD_PRELOAD='/$LIB/lib_init.so' ./hello32
ERROR: ld.so: object '/$LIB/lib_init.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored

其中$LIB将自动在lib和lib64之间切换,具体取决于应用程序是32位还是64位.但显然这不起作用.

是否有一些技巧可以使这项工作? LD_PRELOAD_32,LD_PRELOAD_64?
谢谢!

解决方法

通过指定库的完整路径,您不允许动态链接器根据二进制体系结构调整其搜索路径.仅定义库名称,让链接器为您选择正确的库.例如.:

$LD_PRELOAD=lib_init.so ./hello32

将在/ lib中搜索lib_init.so

$LD_PRELOAD=lib_init.so ./hello64

将在/ lib64中搜索

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读