라이브러리와 바이너리를 위한 환경을 만드는 방법은 무엇입니까?

라이브러리와 바이너리를 위한 환경을 만드는 방법은 무엇입니까?

데스크탑 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_called' 주장이 실패했습니다!

어떻게 해야 하나요?

답변1

로더에 문제가 있는 것 같습니다. 즉, 외부 환경에서 로더를 사용하고 있습니다.

명령 앞에 /data/LTS/lib/ld.so 또는 ld-XYso를 붙여 보십시오. 이것은 로더이며 이를 수행하면 포함된 시스템의 로더를 사용하게 됩니다.

답변2

이유를 찾았습니다. ld.so의 절대 경로 때문입니다. 추가 수정 없이 /data/LTS/usr/bin/python은 가짜 환경 대신 실제 시스템의 ld.so를 사용합니다.

/data/LTS/lib/ld.so /data/LTS/usr/bin/python /tmp/test.py공장.

관련 정보