Como executar programas com o ld-linux.so?

0

The dynamic linker can be run either indirectly by running some dynamically linked program or shared object (in which case no command-line options to the dynamic linker can be passed and, in the ELF case, the dynamic linker which is stored in the .interp section of the program is executed) or directly by running:

/lib/ld-linux.so.* [OPTIONS] [PROGRAM [ARGUMENTS]]

link

Informações semelhantes podem ser encontradas no HOWTO da biblioteca de programas .

Mas quando eu tento,

$ LD_DEBUG=libs /usr/lib/ld-linux.so.2 ls
     23325: find library=ls [0]; searching
     23325:  search cache=/etc/ld.so.cache
     23325: 
ls: error while loading shared libraries: ls: cannot open shared object file

$ LD_DEBUG=libs ls
     23503: find library=libcap.so.2 [0]; searching
     23503:  search cache=/etc/ld.so.cache
     23503:   trying file=/usr/lib/libcap.so.2
...

O que estou fazendo de errado? Existe uma maneira de usar ld-linux.so diretamente para executar um programa?

    
por x-yuri 10.09.2018 / 12:58

1 resposta

2

Tente usar o caminho completo para ls :

[ctor@dom0 tst]$ /lib64/ld-linux-x86-64.so.2 /usr/bin/ls
afile

[ctor@dom0 tst]$ /lib64/ld-linux-x86-64.so.2 ls
ls: error while loading shared libraries: ls: cannot open shared object file

[ctor@dom0 tst]$ /lib64/ld-linux-x86-64.so.2 anyinexistentcommandhere
anyinexistentcommandhere: error while loading shared libraries: anyinexistentcommandhere: cannot open shared object file

[ctor@dom0 tst]$ ldd ls
ldd: ./ls: No such file or directory

[ctor@dom0 tst]$ ldd 'type -P ls'
    linux-vdso.so.1 (0x00007fffd636c000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x000074b858cc3000)
    libcap.so.2 => /lib64/libcap.so.2 (0x000074b858abe000)
    libc.so.6 => /lib64/libc.so.6 (0x000074b8586f8000)
    libpcre.so.1 => /lib64/libpcre.so.1 (0x000074b858486000)
    libdl.so.2 => /lib64/libdl.so.2 (0x000074b858282000)
    /lib64/ld-linux-x86-64.so.2 (0x000074b85910a000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x000074b858064000)

[ctor@dom0 tst]$ LD_DEBUG=libs /lib64/ld-linux-x86-64.so.2 ls
      6380: find library=ls [0]; searching
      6380:  search cache=/etc/ld.so.cache
      6380: 
ls: error while loading shared libraries: ls: cannot open shared object file

[ctor@dom0 tst]$ LD_DEBUG=libs /lib64/ld-linux-x86-64.so.2 inexistentcommand
      6415: find library=inexistentcommand [0]; searching
      6415:  search cache=/etc/ld.so.cache
      6415: 
inexistentcommand: error while loading shared libraries: inexistentcommand: cannot open shared object file

[ctor@dom0 tst]$ LD_DEBUG=libs /lib64/ld-linux-x86-64.so.2 /usr/bin/ls
      6342: find library=libselinux.so.1 [0]; searching
      6342:  search cache=/etc/ld.so.cache
      6342:   trying file=/lib64/libselinux.so.1
      6342: 
      6342: find library=libcap.so.2 [0]; searching
      6342:  search cache=/etc/ld.so.cache
      6342:   trying file=/lib64/libcap.so.2
      6342: 
      6342: find library=libc.so.6 [0]; searching
      6342:  search cache=/etc/ld.so.cache
      6342:   trying file=/lib64/libc.so.6
      6342: 
      6342: find library=libpcre.so.1 [0]; searching
      6342:  search cache=/etc/ld.so.cache
      6342:   trying file=/lib64/libpcre.so.1
      6342: 
      6342: find library=libdl.so.2 [0]; searching
      6342:  search cache=/etc/ld.so.cache
      6342:   trying file=/lib64/libdl.so.2
      6342: 
      6342: find library=libpthread.so.0 [0]; searching
      6342:  search cache=/etc/ld.so.cache
      6342:   trying file=/lib64/libpthread.so.0
      6342: 
      6342: 
      6342: calling init: /lib64/libpthread.so.0
      6342: 
      6342: 
      6342: calling init: /lib64/libc.so.6
      6342: 
      6342: 
      6342: calling init: /lib64/libdl.so.2
      6342: 
      6342: 
      6342: calling init: /lib64/libpcre.so.1
      6342: 
      6342: 
      6342: calling init: /lib64/libcap.so.2
      6342: 
      6342: 
      6342: calling init: /lib64/libselinux.so.1
      6342: 
      6342: 
      6342: initialize program: /usr/bin/ls
      6342: 
      6342: 
      6342: transferring control: /usr/bin/ls
      6342: 
afile
    
por 10.09.2018 / 13:03