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

fil*_*ehd 1 c++ ubuntu 64-bit gcc wubi

我知道这个问题已经有一些答案,但我似乎无法理解为什么我一直收到这个错误.

所以这里是解释:我有64位机器,我已经安装了Windows 7 x64.我正在Windows上的GCC(CodeBlocks)下编译我的代码而没有任何问题.然后我决定我的应用程序必须是可移植的,我决定在Linux下的GCC下编译它.在我的其他32位机器中,代码编译没有任何问题.但是,在我的64位机器上,我决定安装Ubuntu作为Wubi.当然我也安装了Wubi x64版本.

我在Wubi下成功安装了Ubuntu,我安装了所有必要的东西,但是当我尝试编译我的项目时,我在第一行输入错误'你选择的cpu不支持x86-64指令集'.好吧,这对我来说听起来完全没有意义,考虑到我已经在64位机器上安装了Windows 7 x64上的Wubi x64.那么为什么我得到一个错误,说我的CPU不支持x86-64指令集?

可能只是因为我已经安装了WUBI而不是以正常方式在root上安装Ubuntu吗?我真的无法得到这个东西.

非常感谢你

编辑:好的,在Codeblocks的某个地方,我找到了检查"Pentium M"架构的选项.我已经取消选中它,现在我得到了几个错误:

错误:从void*转换为int会失去精度.

出于这个原因,这应该只发生在Linux而不是Windows上?

Pet*_*esh 9

根据这个评论:

编辑:好的,在Codeblocks的某个地方,我找到了检查"Pentium M"架构的选项.我已经取消选中它,现在我得到了几个错误:

这就是编译问题的原因 - "Pentium M"是一个32位架构.代码块下GCC将产生在Windows 32位代码默认

错误:

错误:从void*转换为int会失去精度.

是因为linux x64上的64位模型是LP64,在哪里sizeof(long) == sizeof(pointer) == 64bits,并且sizeof(int) == 32bits你试图将指针(void *)(64位)推入int(32位),这会导致指针信息丢失.

有了这样的编译错误,代码很可能不是64位清理.

出于这个原因,这应该只发生在Linux而不是Windows上?

Linux on x64默认生成64位应用程序,您需要添加-m32到程序的构建选项以使其生成32位代码(可能有一个CodeBlocks目标选项来执行此操作)