gpt4 book ai didi

compilation - Objcopy,它如何制作二进制输出?

转载 作者:行者123 更新时间:2023-12-04 03:01:59 26 4
gpt4 key购买 nike

因为我是 binutils、gcc 和其他人的新手,所以我有一些一般性问题,我在手册中找不到这些问题。

我正在使用 C 和程序集(nasm 语法),我需要输出的原始二进制文件。首先,我将代码编译为带有参数的 objec 文件:

cc -nostartfiles -nostdlib -c -ffreestanding <input file(s)> ;cc or gcc no matter

然后我使用简单的脚本链接所有文件,该脚本只按需要的顺序放置段。
ld -T <script> -o <o.file> <in.file(s)>  ;nothing special here

为了获得原始二进制文件,我使用 objcopy
objcopy -O binary <o.file> <in.file> ;can't be simplier

总而言之,我需要二进制文件 只有其中包含 .text 和 .data 段以及 32 位代码。

1.我可以这样得到我想要的吗?

2.还有其他方法吗? (无论更简单或更复杂)

谢谢你的帮助。

我编译 Asm 代码没有问题,几乎所有 C 代码的问题。

最佳答案

有一次我遇到了 ld手册页和 /DISCARD/据说块从最终输出中排除了其中列出的所有内容。

所以我在 .text 之后插入了这个块, .data.bss

/DISCARD/ : 
{
*(.comment)
*(.eh_frame)
*(.note.GNU-stack)
}

以及我的链接描述文件开头的这一行。
OUTPUT_FORMAT("binary")

因此,我不需要使用 objcopy了。

关于compilation - Objcopy,它如何制作二进制输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11619798/

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