dynamic-loading

프로그램의 openat에 의해 열린 경로를 변경하려면 LD_PRELOAD를 사용하십시오.
dynamic-loading

프로그램의 openat에 의해 열린 경로를 변경하려면 LD_PRELOAD를 사용하십시오.

프로그램이 실제로 파일 시스템에서 여는 일부 경로로 경로를 변경하고 싶습니다. 그 이유는 프로그램을 병렬로 실행하고 싶지만 해당 프로그램이 이를 /tmp/somedir/임시 디렉터리로 사용하고 병렬 인스턴스에서 충돌이 발생하기 때문입니다. 나는 트릭을 수행하는 훌륭한 답변을 찾았습니다.프로세스의 특정 경로를 위조하는 것이 가능합니까?. 안타깝게도 이것이 cat광고에는 작동하지만 내 프로그램에는 작동하지 않습니다. 그 이유는 프로그램이 C++ API를 사용하기 때문이라고 생각합니다. 재현하기 위해 먼저...

Admin

tcpdump가 libpcap의 내보낸 함수를 호출하지 않는 것 같습니다.
dynamic-loading

tcpdump가 libpcap의 내보낸 함수를 호출하지 않는 것 같습니다.

구현을 더 자세히 살펴보면 실제로 사용자 공간에 동적 라이브러리를 로드하는 tcpdump것을 볼 수 있습니다 .libpcap.so 그러나 libpcap을 사용하면 stracelibpcap에서 내보낸 함수에 대한 호출이 표시되지 않습니다. 위의 tcpdump 동작이 예상되는 동작입니까? 감사해요. root@eve-ng02:~# tcpdump --help tcpdump version 4.9.2 libpcap version 1.7.4 OpenSSL 1.0.2g 1 Mar 2016 편집: 내가 받은 의견...

Admin

LD_ASSUME_KERNEL 사용법에 대해 알아보기
dynamic-loading

LD_ASSUME_KERNEL 사용법에 대해 알아보기

LD_ASSUME_KERNEL내 시스템(Debian/bullseye+bpo)의 환경 변수를 이해하려고 합니다 . 에 따르면: $ man pthreads 나는 이와 같은 것을 실행할 수 있어야 하지만 내 시스템에서는 다음과 같은 결과를 얻습니다. % LD_ASSUME_KERNEL=2.2.5 ldd /bin/ls /bin/bash: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file o...

Admin

분기된 프로세스에 "필요한" 것과 다른 동적 라이브러리를 "제공"하는 방법은 무엇입니까?
dynamic-loading

분기된 프로세스에 "필요한" 것과 다른 동적 라이브러리를 "제공"하는 방법은 무엇입니까?

분기된 프로세스에 "필요한" 것과 다른 동적 라이브러리를 "제공"하는 방법을 알고 싶습니다. 예를 들어, 분기가 "foo.so" 라이브러리를 "요청"하는 경우 기본 프로세스는 라이브러리를 "가로채서" "bar.so"를 제공합니다. 동적 라이브러리가 로드되는 방법에 대해 잘 모른다는 점을 고려하면 이는 불가능할 가능성이 높습니다. ...

Admin

대규모 애플리케이션에서 라이브러리 충돌을 찾는 가장 좋은 방법은 무엇입니까?
dynamic-loading

대규모 애플리케이션에서 라이브러리 충돌을 찾는 가장 좋은 방법은 무엇입니까?

Boost, Qt, zlib, libpng 등에 대한 종속성이 많은 대규모 애플리케이션(P라고 부르겠습니다)이 있습니다. 최근에 나는 새로운 공유 객체를 동적으로 로딩해야 하는 기능을 P에 추가했습니다 lib1.so. lib1.soMATLAB API에 따라 다릅니다. 따라서 P가 이미 의존하고 있는 많은 라이브러리에 의존하게 됩니다. 문제는 lib1.soP 내에서 (Qt 5.12의 QLibrary 클래스를 사용하여) 동적으로 로드하려고 하면 로드가 실패한다는 것입니다. 실패 메시지는 Matlab 공유...

Admin

내부 기호의 주소를 .got에 기록해야 하는 이유는 무엇입니까?
dynamic-loading

내부 기호의 주소를 .got에 기록해야 하는 이유는 무엇입니까?

나는 블로그를 읽고 있어요https://eli.thegreenplace.net/2011/11/11/position-independent-code-pic-in-shared-libraries-on-x64 "데이터 참조가 포함된 x64 PIC - 예제" 섹션에서 모듈은 동적 링커에게 절대 주소를 채우라고 지시한 myglob다음 .got코드가 해당 주소를 가져오고 해당 주소에서 데이터를 읽는 것으로 보입니다. 그러나 컴파일러가 왜 이 작업을 수행해야 하는지, 이는 자체 기호이므로 이 기호에 액세스하기 위...

Admin

$LIB 변수는 Ubuntu Server 18.10에서 아무 것도 확장되지 않습니다.
dynamic-loading

$LIB 변수는 Ubuntu Server 18.10에서 아무 것도 확장되지 않습니다.

나는 이것과 똑같은 문제가 있습니다질문이전 게시물에서는 /etc/ld.so.preload올바른 아키텍처를 가로채지 못했습니다. 약간의 배경 지식: ld.so.preload바이너리가 실행하는 모든 파일에서 참조되는 공유 개체(64비트)를 컴파일했습니다. 문제는 ERROR: ld.so: object '/usr/local/lib/mysharedobject.so' from /etc/ld.so.preload cannot be preloaded (wrong ELF class: ELFCLASS64): ignore...

Admin

로드된 ELF 실행 파일 간에 .text 섹션이 공유됩니까?
dynamic-loading

로드된 ELF 실행 파일 간에 .text 섹션이 공유됩니까?

예를 들어, 한 프로그램이 grep현재 실행 중이고 사용자가 다른 인스턴스를 실행하는 경우 두 인스턴스는 메모리를 절약하기 위해 읽기 전용 .text부분을 공유합니까? 주요 실행 가능 텍스트 공유는 공유 라이브러리와 유사합니까? 이 동작이 Linux에 존재합니까? 그렇다면 다른 Unices도 이 작업을 수행합니까? Linux에서 이 작업이 수행되지 않으면 일반적으로 공유 라이브러리로 실행 파일을 구현하여 여러 인스턴스를 병렬로 실행하고 호출된 실행 파일이 단순히 라이브러리의 기본 기능을 호출하면 ...

Admin

정적 링커, 동적 링커, 로더 및 동적 로더의 실행 가능한 ELF 파일은 무엇입니까?
dynamic-loading

정적 링커, 동적 링커, 로더 및 동적 로더의 실행 가능한 ELF 파일은 무엇입니까?

Linux에서 실행 가능한 ELF 파일은 무엇입니까? 정적 링커 동적 링커 짐을 싣는 사람 동적 로더? 이것들 중 무엇이라고 불리는가? 통과execve() 통과 dlopen()? execve()실행 파일 호출 dlopen()의 닭과 달걀 문제를 해결하기 위해 OR에서 어떻게 호출할 수 있습니까 ?execve()dlopen() 감사해요. ...

Admin

동적으로 로드할 수 있는 파일 유형은 무엇입니까?
dynamic-loading

동적으로 로드할 수 있는 파일 유형은 무엇입니까?

운영 체제 개념 Silberschatz A., Galvin PB, Gagne G. 저작 - 운영 체제 개념, 9판 - 2012 8.1.4 동적 로딩 지금까지의 논의에서 프로세스의 전체 프로그램과 모든 데이터는 실행되기 위해 물리적 메모리에 위치해야 합니다. 따라서 프로세스의 크기는 물리적 메모리의 크기에 따라 제한됩니다. 더 나은 메모리 공간 활용을 위해 동적 로딩을 사용할 수 있습니다.동적 로딩을 사용하면 루틴이 호출될 때까지 루틴이 로드되지 않습니다. 모든 루틴은 재배치 가능한 로...

Admin

Linux 커널은 모듈을 어떻게 동적으로 사용합니까?
dynamic-loading

Linux 커널은 모듈을 어떻게 동적으로 사용합니까?

Linux 커널 이해하기 커널은 모듈을 관리할 때 두 가지 주요 작업을 수행해야 합니다. 첫 번째 작업은 커널의 나머지 부분이 주요 기능의 진입점과 같은 모듈의 전역 기호에 도달할 수 있도록 하는 것입니다. 모듈은 커널 및 기타 모듈의 기호 주소도 알아야 합니다. 그러므로,모듈을 연결하면 참조가 한 번 해결됩니다.두 번째 작업은 다른 모듈이나 커널의 다른 부분이 모듈을 사용하는 동안 모듈이 언로드되지 않도록 모듈 사용을 추적하는 것으로 구성됩니다. 간단한 참조 횟수를 통해 각 모듈의 사용량을 ...

Admin

ld-linux.so를 사용하여 프로그램을 실행하는 방법은 무엇입니까?
dynamic-loading

ld-linux.so를 사용하여 프로그램을 실행하는 방법은 무엇입니까?

동적 링커가 실행될 수 있습니다.일부 동적 링커 또는 공유 객체를 실행하여 간접적으로(이 경우 명령줄 옵션이 동적 링커에 전달될 수 없으며 ELF의 경우 프로그램의 .interp 섹션에 저장된 동적 링크가 장치에서 수행됨) 또는직접 실행: /lib/ld-linux.so.* [옵션] [프로그램 [매개변수]] https://jlk.fjfi.cvut.cz/arch/manpages/man/core/man-pages/ld.so.8.en 유사한 정보는 다음에서 찾을 수 있습니다.도서관 안내....

Admin

네트워크 중단이 발생하면 마운트된 NFS 디렉터리에서 바이너리 실행이 실패합니까?
dynamic-loading

네트워크 중단이 발생하면 마운트된 NFS 디렉터리에서 바이너리 실행이 실패합니까?

그래서 NFS 서버 역할을 하는 Linux 상자가 있습니다. 내보내는 폴더에는 많은 프로그램이 설치됩니다. 다른 Linux 상자에서 내보낸 NFS 폴더에 있는 프로그램을 꽤 오랫동안 실행했는데 빨리 끝나지 않습니다. 알고 보니 네트워크에 긴급 유지 관리 작업을 해야 해서 일정 기간 동안 네트워크가 다운될 예정이었습니다. 실행 중인 프로그램이 어떻게 되는지 알고 싶습니다. 내가 이해하는 바는 프로그램이 게으른 방식으로 RAM에 로드된다는 것입니다. 따라서 최상의 시나리오에서는 프로그램이 이미 R...

Admin

FreeBSD의 프로세스에 의해 로드된 라이브러리 나열
dynamic-loading

FreeBSD의 프로세스에 의해 로드된 라이브러리 나열

FreeBSD에서 프로세스의 로드된 모든 라이브러리를 나열하는 방법은 무엇입니까? Linux에서는 사용할 수 있습니다/proc cat /proc/$pid/maps 솔라리스에는pldd pldd $pid FreeBSD에서도 작동합니다 /proc: cat /proc/$pid/map 그러나 /proc기본적으로 설치되지는 않습니다. 이는 고객 시스템의 자동 감지 도구에서 사용되고 있으므로 즉시 사용할 수 있는 도구(도구 또는 파일)를 찾고 있습니다. FreeBSD에서 데이터를 처리하려면 추가 ...

Admin

로컬 libc를 지정하면 전역 libc가 호출됩니까?
dynamic-loading

로컬 libc를 지정하면 전역 libc가 호출됩니까?

foo 명령을 실행하고 다음과 같이 사용할 다른 libc를 지정하면: LD_LIBRARY_PATH=$PATH_TO_MY_CUSTOM_LIBC foo 위에 주어진 명령을 실행하는 데 전역적으로 정의된 libc가 사용됩니까? 상황에 맞게 libc가 물리적으로 존재하고 컴퓨터에 액세스할 수 있지만 어떤 이유로 사용할 수 없는 상황을 생각해 보세요. 로그인된 쉘에서 특정 명령을 실행하려면 다른 libc를 제공해야 합니다. inline을 지정하면 LD_LIBRARY_PATH전역적으로 정의된 lib...

Admin