为何ELF文件的strip工具不具备跨平台兼容性?
问题描述
我在树莓派上编译得到了一个aarch64架构的ELF可执行文件:
$ 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
当我在x64架构的WSL机器上尝试为该文件剥离符号时失败:
$ strip kbgen.elf.aarch64 strip: Unable to recognise the format of the input file `kbgen.elf.aarch64'
这似乎有些奇怪,ELF的段结构不是具备跨平台性吗?
在树莓派上执行strip操作则正常,文件大小减半:
# 登录树莓派确认剥离操作正常 $ 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 # <----- 大小减半,没问题! -rwxr-xr-x 1 root root 36358680 Oct 26 08:42 kbgen.elf.aarch64 # 用file工具确认ELF已被剥离符号 $ 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
内容的提问来源于stack exchange,提问作者OrenIshShalom
相关产品推荐
相关产品推荐

