gpt4 book ai didi

linux - 如何使用gcc制作交叉编译器?

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

虽然网上有很多关于如何制作交叉编译器的教程,但我实际上并没有明白。

我使用的是 fedora 16 并且已经安装了 gcc。我不确定 binutils。如何为我自己的操作系统(目标)制作交叉编译器?我正在读here on os dev wiki但我不明白。我的意思是,我该怎么办?我只是不遵循这些步骤。

注意: 我想为我当前正在使用的相同架构构建一个交叉编译器。我的意思是与运行 fedora 的相同架构。

最佳答案

如果您自己的操作系统的架构与您正在运行的操作系统相同,那么您不需要新的编译器,您已经拥有的编译器就可以了。不过,您可能仍然需要自定义 binutils,但这取决于您自己的操作系统所需的可执行文件的格式。

我为我自己的玩具操作系统所做的就是让它理解 ELF 二进制文件:它是一种加载和运行起来极其简单的格式。这样您就可以使用操作系统的标准binutils。您只需使用自定义链接器脚本链接可执行文件,而不是链接任何 Linux 库。

但请注意,很多人 consider this not such a good idea ,但它可能会让你坚持一段时间。

我的编译器命令如下所示:

%.o: %.c
gcc -c -o $@ -ffreestanding -fno-stack-protector -mpreferred-stack-boundary=2 -Os -g -Wall $<

我的链接器命令:

%.myexe: %.o
ld -o $@ -T myexe.ld $^ `gcc -print-libgcc-file-name`

作为引用,链接器脚本是 myexe.ld:

ENTRY(main)

SECTIONS
{
.text :
{
*(.text)
}
.data :
{
*(.data)
}
.rodata :
{
*(.rodata)
}
.bss :
{
*(.bss)
}
}

关于linux - 如何使用gcc制作交叉编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17675029/

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