我正在尝试将 gcc 移植到一个新目标。目标是我们自己设计的具有完整指令集的新处理器。我们希望能够在 gcc 中为我们的新处理器编译 c 代码。为了能够做到这一点,我们需要为这个特定目标移植 gcc。我已经阅读了一些 gcc 文档如何做。到目前为止,我已经编辑/破解了 gcc 的现有目标并将其用于我们的目标,这意味着 gcc 将为我们的特定处理器生成汇编代码。所以我正在使用 gcc 为这个新目标编译 gcc。然后 gcc 将生成一个编译器 myprocessor-gcc。该编译器将能够为我们的目标生成汇编代码。通过使用我的编译器为它提供以下内容:
myprocessor-gcc test.c
test.c 看起来像:
void __main(void);
void main(void)
{
return;
}
void __main(void)
{
int i = 0;
int i2 = 1;
int i3 = 2;
i = i2+i3;
return;
}
gcc 能够编译此代码并生成我所期望的正确汇编语言。
所以我详细阐述了我的测试函数:
void __main(void)
{
int i = 0;
int i2 = 1;
int i3 = 2;
int i4 = 3;
i = i2+i3+i4;
return;
}
在那之后 gcc 给了我一个段错误。我想调试这个段错误,我需要 gcc 可以给我的所有调试打印。所以当我输入:
myprocessor-gcc test.c -g
我想查看一些调试打印,以便我可以在内部调试 gcc。对不起,如果我不清楚,如果仍然不清楚,我会详细说明。
最佳答案
您需要确保您的交叉编译器本身是使用 -g
选项编译的,以便它具有调试符号。然后运行 gdb myprocessor-gcc test.c
以查看编译器中发生段错误的位置。您将必须学习一些 gdb 命令,例如 run
和 where
。
关于c - 将 gcc 移植到新目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24305202/