我想将LD_PRELOAD设置为指向共享库,我可以运行64位或32位应用程序。很明显,共享库和可执行文件必须在比特级上匹配。在Linux中使用LD_PRELOAD混合64位/ 32位环境
$ 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? 谢谢!
我会用一个包装脚本,检查应用程序的位数和相应 – user3159253
设置库尽量不要指定完整路径设置$ LIB时,只是不要忘了单引号。动态链接器将选择正确的一个,例如LD_PRELOAD = lib_init.so – kofemann
@kofemann这正是我正在寻找的。你能否给我一个答案,以便我可以批准它。 –