/sbin/initは共有オブジェクトですか?

/sbin/initは共有オブジェクトですか?

「init」がカーネルをロードした後に始まる最初のプロセスであることを知っていますが、私にはあいまいなことがあります。プロセスの場合は、バイナリ実行可能ファイルが必要です。ただし、以下の共有オブジェクトは実行可能ファイルのように見えますが、主な機能を持たないコンパイルされたコードです。

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

明らかに、共有オブジェクトは実行可能ファイルです。ところで、なぜそうなのでしょうか?

ベストアンサー1

使用時-pie場所に依存しない実行可能ファイル)例えば:

gcc -pie -fPIC hello.c

それからあなたは:

#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

さらに情報が必要な場合は、ご覧ください位置独立コード

おすすめ記事