/ sbin / init é objeto compartilhado?

4

Eu sei que 'init' é o primeiro processo que é iniciado depois que o kernel é carregado, mas há uma ambigüidade para mim. Se for um processo, ele deve ter um arquivo executável binário. No entanto, o objeto compartilhado a seguir é um código compilado que se parece com um arquivo executável, mas não há função principal.

sardari@mint / $ file /sbin/init
/sbin/init: ELF 64-bit LSB  shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=7a4c688d009fc1f06ffc692f5f42ab09e68582b2, stripped

Aparentemente, um objeto compartilhado pode ser um arquivo executável, mas por quê?

    
por soroosh 03.05.2015 / 07:10

1 resposta

2

Quando um arquivo compilado com -pie ( Executável Independente da Posição ), como:

gcc -pie -fPIC hello.c

Então você tem:

#file ./a.out 
a.out: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x2afb7892000a1dc5b9010c591b75987188aa2d66, stripped

Se precisar de mais informações, visite Código independente de posição

    
por 03.05.2015 / 16:20

Tags