문제

나는 최근에 그것에 대한 언급을 발견했다 proggit 그리고 (현재) 설명되지 않았습니다.

예상 컨데 이것 아마도, 나는 확실하지 않습니다.

도움이 되었습니까?

해결책

설정하면 LD_PRELOAD 공유 객체의 경로에 해당 파일이로드됩니다. ~ 전에 다른 도서관 (C 런타임 포함, libc.so). 그래서 달리기 ls 당신의 특별한 malloc() 구현, 이것을 수행합니다.

$ LD_PRELOAD=/path/to/my/malloc.so /bin/ls

다른 팁

동일한 기호가있는 라이브러리를 만들고 라이브러리를 지정하여 스톡 라이브러리의 기호를 대체 할 수 있습니다. LD_PRELOAD.

어떤 사람들은이를 사용하여 비표준 위치에 라이브러리를 지정하지만 LD_LIBRARY_PATH 그 목적으로 더 좋습니다.

와 함께 LD_PRELOAD 라이브러리를 우선시 할 수 있습니다.

예를 들어 구현하는 라이브러리를 쓸 수 있습니다 malloc 그리고 free. 그리고 이것들을로드함으로써 LD_PRELOAD 당신의 malloc 그리고 free 표준보다는 실행됩니다.

많은 사람들이 언급했듯이 사용합니다 LD_PRELOAD 사전로드 라이브러리. BTW, 당신은 할 수 있습니다 확인하다 설정을 사용할 수있는 경우 ldd 명령.

예 : 자신의 사전로드해야한다고 가정하십시오 libselinux.so.1.

> ldd /bin/ls
    ...
    libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f3927b1d000)
    libacl.so.1 => /lib/x86_64-linux-gnu/libacl.so.1 (0x00007f3927914000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f392754f000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f3927311000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f392710c000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f3927d65000)
    libattr.so.1 => /lib/x86_64-linux-gnu/libattr.so.1 (0x00007f3926f07000)

따라서 예압 환경을 설정하십시오.

  export LD_PRELOAD=/home/patric/libselinux.so.1

라이브러리를 다시 확인하십시오.

>ldd /bin/ls
    ...
    libselinux.so.1 =>
    /home/patric/libselinux.so.1 (0x00007fb9245d8000)
    ...

LD_PRELOAD 표준 세트를 재정의하는 기능이있는 공유 라이브러리를 나열합니다. /etc/ld.so.preload 하다. 이들은 로더에 의해 구현됩니다 /lib/ld-linux.so. 선택한 몇 가지 함수 만 재정의하려면 오버링 객체 파일을 만들고 설정하여이를 수행 할 수 있습니다. LD_PRELOAD; 이 객체 파일의 함수는 다른 기능을 남겨 두는 기능 만 무시합니다.

공유 도서관에 대한 자세한 내용은 방문하십시오 http://tldp.org/howto/program-library-howto/shared-libraries.html

수출하기 쉽습니다 mylib.so Env :

$ export LD_PRELOAD=/path/mylib.so
$ ./mybin

비활성화하려면 :

$ export LD_PRELOAD=

예압에 대한 자세한 블로그 게시물은 다음과 같습니다.

https://blog.cryptomilk.org/2014/07/21/what-ispreloading/

사용 LD_PRELOAD 경로, 제공된 공유 객체를 제공 한 기본값 위로 제공 한 공유 객체를로드하도록 강제로 강제로 제공 할 수 있습니다.

개발자는이를 사용하여 다양한 버전의 공유 객체를 제공하여 응용 프로그램을 디버깅합니다.

준비된 공유 객체를 사용하여 기존 기능을 재정의하여 특정 응용 프로그램을 해킹하는 데 사용했습니다.

LD_PRELOAD가 사용될 때 해당 파일은 다른 어느 전에도로드됩니다.$export LD_PRELOAD=/path/lib 미리로드되는 lib, 이것조차도 프로그램에도 사용될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top