Unix 中什么是剥离可执行文件和未剥离可执行文件?

Unix 中什么是剥离可执行文件和未剥离可执行文件?

人文件,

EXAMPLES
   $ file file.c file /dev/{wd0a,hda}
   file.c:   C program text
   file:     ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
             dynamically linked (uses shared libs), stripped
   /dev/wd0a: block special (0/0)
   /dev/hda: block special (3/0)
   $ file -s /dev/wd0{b,d}
   /dev/wd0b: data
   /dev/wd0d: x86 boot sector
   $ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}
   /dev/hda:   x86 boot sector
   /dev/hda1:  Linux/i386 ext2 filesystem
   /dev/hda2:  x86 boot sector
   /dev/hda3:  x86 boot sector, extended partition table
   /dev/hda4:  Linux/i386 ext2 filesystem
   /dev/hda5:  Linux/i386 swap file
   /dev/hda6:  Linux/i386 swap file
   /dev/hda7:  Linux/i386 swap file
   /dev/hda8:  Linux/i386 swap file
   /dev/hda9:  empty
   /dev/hda10: empty

   $ file -i file.c file /dev/{wd0a,hda}
   file.c:      text/x-c
   file:        application/x-executable, dynamically linked (uses shared libs),
   not stripped
   /dev/hda:    application/x-not-regular-file
   /dev/wd0a:   application/x-not-regular-file

可执行剥离是什么意思?

为什么有些可执行文件被删除,而另一些则没有?

答案1

如果使用 gcc 的 -g 标志编译可执行文件,则它包含调试信息。这意味着对于每条指令,都有源代码的哪一行生成它的信息,源代码中变量的名称被保留,并且可以在运行时关联到匹配的内存等。Strip 可以删除此调试信息和其他包含的数据在可执行文件中,为了减小可执行文件的大小,这对于执行来说不是必需的。

相关内容