Tenho um executável aarch64 elf compilado no meu raspberry pi:
$ file kbgen.elf.aarch64
kbgen.elf.aarch64: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=4cf36e84c30ea8e53073bb64cf99df1d82084702, with debug_info, not stripped
Quando tento remover seus símbolos na minha máquina x64 ( wsl ), ele falha:
$ strip kbgen.elf.aarch64
strip: Unable to recognise the format of the input file `kbgen.elf.aarch64'
Isso é estranho, né? Quero dizer, as seções de elfos são "multiplataforma", não são?
# get inside raspberry pi to make sure stripping is ok there
$ ls -l kbgen.elf.aarch64
-rwxr-xr-x 1 oren oren 73257408 Oct 26 08:40 kbgen.elf.aarch64
$ sudo strip kbgen.elf.aarch64
$ ls -l kbgen.elf.aarch64 # <----- size reduced by a half, good !
-rwxr-xr-x 1 root root 36358680 Oct 26 08:42 kbgen.elf.aarch64
# make sure elf was stripped with file utility
$ file kbgen.elf.aarch64
kbgen.elf.aarch64: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=4cf36e84c30ea8e53073bb64cf99df1d82084702, stripped
Eles são.
Não há razão para
strip
ser dependente da plataforma ELF 1 , exceto pelo acidente histórico de implementação ao qual Peter Cordes aludiu:strip
useslibbfd
(que também é usado porobjcopy
,objdump
, etc.), e essa biblioteca tem muitas partes específicas de arquitetura (já que lida com muito mais do que apenas seções ELF).Você deveria tentar usar
eu-strip
(part ofelfutils
package) em vez disso. Eu suspeito que issoeu-strip
vai funcionar.1 Há muitas razões pelas quais
strip
haveria implementações diferentes entre sayELF
eCOFF
. Mas todas as variantes deELF
são praticamente as mesmas até ondestrip
vai.