file
Komutu ve komutu kullanarak Unix'teki yürütülebilir dosyanın niteliğini belirleyebilirsiniz type
.
tip
type
Bir yürütülebilir dosyanın diskteki konumunu şu şekilde belirlemek için kullanırsınız :
$ type -a ls
ls is /usr/bin/ls
ls is /bin/ls
Şimdi biliyorum ki ls
burada benim sistemimde 2 yerde bulunuyor: /usr/bin/ls
& /bin/ls
. Bu yürütülebilir dosyaları bakarak aynı olduklarını görebilirsiniz:
$ ls -l /usr/bin/ls /bin/ls
-rwxr-xr-x. 1 root root 120232 Jan 20 05:11 /bin/ls
-rwxr-xr-x. 1 root root 120232 Jan 20 05:11 /usr/bin/ls
NOT:cmp
veya ile boyutlarının ötesinde aynı olduklarını onaylayabilirsiniz diff
.
fark ile
$ diff -s /usr/bin/ls /bin/ls
Files /usr/bin/ls and /bin/ls are identical
cmp ile
$ cmp /usr/bin/ls /bin/ls
$
Dosya kullanma
Onları file
komutu kullanarak sorgularsam :
$ file /usr/bin/ls /bin/ls
/usr/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x303f40e1c9349c4ec83e1f99c511640d48e3670f, stripped
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x303f40e1c9349c4ec83e1f99c511640d48e3670f, stripped
Yani bunlar C / C ++ 'dan derlenen gerçek fiziksel programlar olacaktır. Kabuk betikleri olsaydı, tipik olarak şu şekilde olurdu file
:
$ file somescript.bash
somescript.bash: POSIX shell script, ASCII text executable
ELF nedir?
ELF bir dosya biçimidir , gcc
C / C ++ gibi programları derlemek için kullanılan bir derleyicinin çıktısıdır ls
.
Bilgi işlemde, Yürütülebilir ve Bağlanabilir Biçim (eski adıyla Genişletilebilir Bağlantı Biçimi olarak adlandırılan ELF) yürütülebilir dosyalar, nesne kodu, paylaşılan kütüphaneler ve çekirdek dökümler için ortak bir standart dosya biçimidir.
Genellikle dosya adında şu uzantılardan birine sahip olur: yok, .o, .so, .elf, .prx, .puff, .bin