编译C文件时出现不受支持的x86-64指令集错误

大伯杰

我正在尝试按照链接中的教程进行操作

当我开始制作test.c文件时,我尝试运行第一个编译行。

gcc -c -g -Os -march=i686 -ffreestanding -Wall -Werror test.c -o test.o

这是内容 test.c

__asm__(".code16\n");
__asm__("jmpl $0x0000, $main\n");

void main() {
}

当我调用第一个编译行时,它显示了此错误。

test.c:1:0: error: CPU you selected does not support x86-64 instruction set
 __asm__(".code16\n");
 ^

谁能告诉我为什么会这样吗?如果可能,如何解决?

我正在运行Ubuntu Desktop x64,在此先感谢您的帮助。

编辑:

我已将第一条编译行更改为:

gcc -c -g -Os -m32 -ffreestanding -Wall -Werror test.c -o test.o

它似乎工作正常。但是,还有两条线给我带来麻烦。

ld -static -Ttest.ld -nostdlib --nmagic -o test.elf test.o

objcopy -O binary test.elf test.bin

第一个使我犯了错误。

ld: i386 architecture of input file `test.o' is incompatible with i386:x86-64 output

因此,我没有尝试最后的编译行。

这是test.ld文件的代码。

ENTRY(main);
SECTIONS
{
    . = 0x7C00;
    .text : AT(0x7C00)
    {
        *(.text);
    }
    .sig : AT(0x7DFE)
    {
        SHORT(0xaa55);
    }
} 

对于如何解决这个问题,有任何的建议吗?

福兹

供应-m32代替-march=i686

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

您选择的CPU不支持x86-64指令集

来自分类Dev

无法编译ruby扩展:您选择的CPU不支持x86-64指令集

来自分类Dev

无法编译ruby扩展:您选择的CPU不支持x86-64指令集

来自分类Dev

点安装-您选择的CPU不支持x86-64指令集

来自分类Dev

为什么80x87指令集使用“基于堆栈”的设计?

来自分类Dev

64位指令中的C ++指针

来自分类Dev

64位指令中的C ++指针

来自分类Dev

x86和x64共享指令集?

来自分类Dev

mwait x86指令不等待DMA

来自分类Dev

mwait x86指令不等待DMA

来自分类Dev

“ cqo”,“ cdq”和“ cwd” x86_64指令。为什么不只使用cqo?

来自分类Dev

长度更改前缀(LCP)是否在简单的x86_64指令上引起停顿?

来自分类Dev

C:将x86指令放入数组并执行

来自分类Dev

x64指令编码(r / m,reg与reg,r / m)

来自分类Dev

列出 GAS 中支持的指令集?

来自分类Dev

编译器和指令集

来自分类Dev

用于添加新的GNU汇编程序x86指令并重新编译的源代码

来自分类Dev

如何在ARMv8-a上启用Aarch32指令集?

来自分类Dev

X86指令以实模式关闭计算机电源?

来自分类Dev

x86指令编码如何选择操作码

来自分类Dev

JS和JL x86指令之间的区别

来自分类Dev

此x86指令中发生了什么?

来自分类Dev

LLVM IR和x86指令之间的映射

来自分类Dev

MOV x86指令是否实现C ++ 11 memory_order_release原子存储?

来自分类Dev

在8086指令集中使用ASSUME指令

来自分类Dev

我可以在vimrc中检测指令集架构吗?(ARM与x86)

来自分类Dev

运行x86可执行文件时出现错误“ 16434非法硬件指令./a.out”

来自分类Dev

如果x86-64中没有兼容模式开关,是否保证不会遇到非64位指令?

来自分类Dev

是否有x86指令来告诉该指令正在哪个内核上运行?

Related 相关文章

热门标签

归档