我想將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這正是我正在尋找的。你能否給我一個答案,以便我可以批准它。 –