«dynamic-linking» 태그된 질문

컴퓨팅에서 동적 연결은 런타임시 실행 파일에 필요한 공유 라이브러리를로드 (영구 저장소에서 RAM으로 복사)하고 링크 (점프 테이블을 채우고 포인터를 재배치)하는 운영 체제 (OS)의 프로세스입니다. 실행될 때.

4
SO (공유 객체) 번호는 어떻게 작동합니까?
Linux에서 공유 객체는 "so 숫자"를 사용한다는 것을 알고 있습니다. 즉, 다른 버전의 공유 객체에는 다른 확장자가 제공됩니다. example.so.1 example.so.2 아이디어는 두 가지 버전의 라이브러리가 시스템에 존재할 수 있다는 것입니다 (Windows의 "DLL 지옥"과 반대). 이것이 실제로 어떻게 작동하는지 알고 싶습니다. 종종 나는 그것이 최신 버전이 어디에 있는지에 example.so대한 상징적 링크라는 것을 …

4
실행 파일은 런타임에 공유 객체를 어디에서 찾습니까?
링크 / 컴파일시 공유 객체 포함을 정의하는 방법을 이해합니다. 그러나 여전히 실행 파일에서 실행 파일이 공유 객체 ( *.so라이브러리)를 어떻게 찾는 지 궁금합니다 . 예를 들어, 내 앱 a.out은 lib.so라이브러리에 정의 된 함수를 호출합니다 . 컴파일 후 lib.so내의 새 디렉토리 로 이동 합니다 $HOME. a.out거기서 찾아 보라고 어떻게 할 수 …

2
64 비트 시스템에서 32 비트 바이너리를 실행할 때 "찾을 수 없음"메시지 표시
나는 현재 데비안에 이상한 문제가 있습니다 (wheezy / amd64). 서버를 설치하기 위해 chroot를 만들었습니다 (더 자세한 내용은 알려 드릴 수 없습니다, 죄송합니다). 경로를 호출하자 /chr_path/. 일을 쉽게하기 위해 debootstrap (또한 wheezy / amd64) 으로이 chroot를 초기화했습니다. 모두는 chroot 안에서 잘 작동하는 듯하지만 내가 가진 내 서버의 설치 스크립트를 시작했을 때 …



3
라이브 시스템에서 정의 된 공유 라이브러리 심볼이있는 위치를 찾고 시스템에서 내 보낸 모든 심볼을 나열합니다.
기본적으로 이것은 두 가지 질문입니다. 시스템 내에서 내 보낸 모든 심볼을 공유 라이브러리 경로와 함께 나열 할 수 있다면 간단히 grep그 출력을 얻을 수 있기 때문입니다. 커널 심볼의 경우 cat /proc/kallsyms메모리가로드 된 모듈의 모든 심볼 목록을 항상 얻을 수 있기 때문에 다소 쉽다고 생각합니다 . 그런 다음 sudo cat /proc/modules주소가있는로드 …

4
파일이 있고 경로에 있지만 "파일을 찾을 수 없음"으로 Linux 실행 파일이 실패 함
wine실행 파일 (버전 2.12) 을 시작하려고 하지만 다음 오류가 발생합니다 ( $= shell 프롬프트). $ wine bash: /usr/bin/wine: No such file or directory $ /usr/bin/wine bash: /usr/bin/wine: No such file or directory $ cd /usr/bin $ ./wine bash: ./wine: No such file or directory 그러나 파일은 다음과 같습니다. $ which …

2
충돌없이 공유 라이브러리를 업그레이드하는 방법은 무엇입니까?
여기서는 실행 파일을 다시 쓸 수 있으며 프로세스가 정상적으로 실행된다는 것을 나타냅니다. 프로세스가 다시 시작되면 다시 읽습니다. 그러나 프로세스가 실행되는 동안 (dev에서 테스트 서버까지 scp를 사용하여) 바이너리 파일을 바꾸려고하면 'file busy'라고 표시됩니다. 그리고 공유 라이브러리 파일 (* .so)을 교체하면 해당 파일을 연결하는 모든 프로세스가 충돌합니다. 왜 그래? 뭔가 빠졌습니까? 프로세스를 …

1
유닉스 / 리눅스 시스템이 링크 된 라이브러리의 필요한 버전을 찾을 때까지 디렉토리를 통과하지 않는 이유는 무엇입니까?
"alpha"라는 바이너리 실행 파일이 있는데 링크 된 라이브러리 (libz.so.1.2.7)가 필요합니다. /home/username/myproduct/lib/libz.so.1.2.7 다음 명령을 실행하여 이진 실행 파일을 생성하기 전에 터미널 인스턴스로 내 보냅니다. export LD_LIBRARY_PATH=/home/username/myproduct/lib/:$LD_LIBRARY_PATH 이제 동일한 라이브러리가 필요하지만 다른 버전 (예 : (libz.so.1.2.8))이 필요한 다른 응용 프로그램 "bravo"를 생성 /lib/x86_64-linux-gnu/libz.so.1.2.8하면 시스템에서 다음 오류가 발생합니다. version `ZLIB_1.2.3.3' not found (required …

9
데비안에서 java를 시작하는 문제 :“공유 라이브러리를로드하는 동안 오류가 발생했습니다 : libjli.so”
Java를 시작하려고합니다. $ java -version java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory $ ldd /usr/lib/jvm/java-6-openjdk/jre/bin/java linux-gate.so.1 => (0xb779f000) libz.so.1 => /usr/lib/libz.so.1 (0xb7780000) libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb7767000) libjli.so => /usr/lib/jvm/java-6-openjdk/jre/bin/../lib/i386/jli/libjli.so (0xb7762000) libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb775e000) libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7603000) /lib/ld-linux.so.2 (0xb77a0000 …

1
데비안 / 우분투에 2 개의 glibc 설치
동일한 컴퓨터에 두 개의 다른 glibc 버전을 설치하고 사용할 수 있습니까? 이전 glibc 바이너리에 의존하는 레거시 소프트웨어를 실행하는 데 하나의 버전 만 사용되는 곳은 어디입니까? 가능 패키지 관리자의 도움으로 그렇게 할 수 있나요 (같은 것은 "이 패키지 및 종속성에 설치 /opt/old-glibc하는 대신 무서운 그것을 관리)

3
라이브러리가 경로에 있는지 확인
라이브러리가 프로그램에 의해 설치되고 사용 가능한지 테스트하고 싶다고 가정합니다. ldconfig -p | grep mylib시스템에 설치되어 있는지 확인할 수 있습니다 . 그러나 라이브러리가 설정을 통해서만 알려지면 어떻게 LD_LIBRARY_PATH될까요? 이 경우 프로그램에서 라이브러리를 찾을 수 있지만 찾지 못할 수 있습니다 ldconfig. 라이브러리가 결합 된 링커 경로 에 있는지 어떻게 확인할 수 있습니까? …


2
내 ld.so.cache를 사용할 수 있습니까?
ldconfig 두 가지 흥미로운 옵션이 있습니다. -f conf Use conf instead of /etc/ld.so.conf. -C cache Use cache instead of /etc/ld.so.cache. 나는 /etc/ld.so.conf내 자신의 홈 디렉토리에 복사 를 시도 하고 로컬 라이브러리에 대한 경로를 포함하도록 편집했습니다 /home/syockit/local/usr/lib. ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache 그런 다음 라이브러리가 캐시되었는지 확인하기 위해 ldconfig -f /home/syockit/ld.so.conf …

1
ld-linux.so와 함께 대체 libc 사용하기 더 깨끗한 방법?
나는 매우 오래된 glibc를 가진 레거시 시스템을 가지고 있으며, 많은 테스트 / 검증 작업을 거치지 않으면 업그레이드 할 수 없습니다. 해당 시스템에서 여러 번 새로운 프로그램 (예 : Java 1.7)을 실행해야했습니다. 필요한 모든 libs를 패키지하고 chroot에서 서비스를 실행하는 chroot 솔루션을 선택했습니다. chroot는 매우 제한적이며 LD_LIBRARY_PATH의 문제를 해결하려고합니다. 불행히도, libc.so.6: cannot …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.