首页 > 解决方案 > i686-elf-gcc 生成 64 位文件而不是 32 位文件?

问题描述

我正在遵循 osdev 准系统教程并为其制作了一个自定义 Makefile,但是当我运行make kernel将系统编译为 .bin 文件时,我在链接时遇到了错误。

链接器输出: src/kernel.o: file not recognized: file format not recognized

链接器命令: $HOME/opt/cross/bin/i686-elf-gcc -T linker.ld -o kernel.bin -ffreestanding -O2 -nostdlib boot.o kernel.o -lgcc

我快速查看了一下,发现 i686-elf-gcc 交叉编译器生成了一个 64 位文件。诡异的。我尝试用相同的标志编译 kernel.c,它工作得很好。问题可能是什么?

注册会计师-std=gnu99 -ffreestanding -O2 -Wall -Wextra

制作文件$(GCC) $(CPARAMS) -c $@ -o $<

所以实际的命令看起来像这样$HOME/opt/cross/bin/i686-elf-gcc -std=gnu99 -ffreestanding -O2 -Wall -Wextra -c kernel.c -o kernel.o

标签: cgcccross-platformosdev

解决方案


推荐阅读