Libraries

如何為庫和二進製文件創建環境?

  • June 18, 2014

我有一個無法在我的桌面 Linux 下執行的工具。所以我想創建一個包含所有要求的文件夾,並在文件夾中執行它。出於某種原因,虛擬機或容器在這裡不是解決方案。

我已經在 中啟動了一個 Ubuntu Trusty /data/LTS,並通過在 中執行 chroot jail 來安裝該工具所需的一切/data/LTS

現在我發出:

PATH=/data/LTS/usr/local/sbin:/data/LTS/usr/local/bin:/data/LTS/usr/sbin:/data/LTS/usr/bin:/data/LTS/sbin:/data/LTS/bin \
LD_LIBRARY_PATH=/data/LTS/usr/local/lib:/data/LTS/usr/lib/x86_64-linux-gnu:/data/LTS/usr/lib:/data/LTS/lib/x86_64-linux-gnu:/data/LTS/lib \
PYTHONHOME=/data/LTS/usr \
/data/LTS/usr/bin/python /tmp/test.py

我得到:

ld.so 檢測到不一致:dl-close.c:759:_dl_close:斷言“map->l_init_call”失敗!

我該怎麼辦?

這看起來像是載入程序的問題。即您正在使用來自外部環境的載入程序。

嘗試在命令前加上 /data/LTS/lib/ld.so 或 ld-XYso 這是載入程序,通過這樣做,您將使用封閉系統中的載入程序。

找到原因。這是因為 ld.so 的絕對路徑。無需進一步修改, /data/LTS/usr/bin/python 將使用來自實際系統的 ld.so 而不是假環境。

/data/LTS/lib/ld.so /data/LTS/usr/bin/python /tmp/test.py作品。

引用自:https://unix.stackexchange.com/questions/137560