gpt4 book ai didi

Linux 可执行文件格式。规范在哪里?

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:51 24 4
gpt4 key购买 nike

我想了解Linux可执行文件是如何组成的。我在哪里可以获得规范?

我用 gcc 编译了一个简单的汇编文件,但生成的文件大小比我预期的要大得多。

# cat tmp.s
.intel_syntax noprefix
.global main
main:
mov rax, 42
ret
# gcc -o tmp tmp.s
# ./tmp
# echo $?
42

# ls -l tmp
-rwxr-xr-x 1 root root 8136 Jul 31 04:03 tmp

# xxd tmp
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............
00000010: 0300 3e00 0100 0000 f004 0000 0000 0000 ..>.............
...
...
00001fb0: 0000 0000 0000 0000 0100 0000 0000 0000 ................
00001fc0: 0000 0000 0000 0000 ........

# uname -a
Linux fb8275f9e7a0 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

# gcc --version
gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

最佳答案

file tmp 会告诉您这是一个 ELF 可执行文件。请参阅https://stackoverflow.com/tags/elf/info ,然后尝试 readelf -a tmp

回复:文件大小:https://www.muppetlabs.com/~breadbox/software/tiny/teensy.html .

当前的工具链还将部分与页面边界对齐,使它们比必要的更大。与 ld --nmagic 链接以完全禁用节对齐(可能会破坏编译器生成的代码)。还禁用与共享库的链接。无论如何,这就是为什么您的可执行文件只有 2x 4kiB 多一点,而其中大部分都是填充。

关于Linux 可执行文件格式。规范在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57283100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com