抱歉,未实现:未编译64位模式。

23

我想要做的事情是(在 Windows 7 64 位系统上):

g++ -m64 -o main main.cpp

我收到的错误是:

Sorry, unimplemented: 64 bit mode not compiled in ...

我从这里安装了mingw-64-install.exe:https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/

但我仍然收到相同的错误。 我是否还需要将此文件夹的路径添加到环境变量中?

当我键入g++ -v时,我得到的是:

Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.9.3/lto-wrapper.exe
Target: mingw32
Configured with: ../src/gcc-4.9.3/configure --build=x86_64-pc-linux-gnu    --host=m
ingw32 --prefix=/mingw --disable-win32-registry --target=mingw32 --with-arch=i58
6 --enable-languages=c,c++,objc,obj-c++,fortran,ada --enable-static --enable-sha
red --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable- version-sp
ecific-runtime-libs --enable-libstdcxx-debug --with-tune=generic --enable-nls
 Thread model: win32​
 gcc version 4.9.3 <GCC>
2个回答

20
当运行 mingw-64-install.exe 时,在设置屏幕上您必须选择 x86_64 架构。使用此架构,64位也是默认目标。如果运行 g++ -v,您应该会得到类似以下内容:
C:\>g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=C:/Program\ Files/mingw-w64/x86_64-5.3.0-posix-seh-rt_v4-rev0/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/5.3.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-5.3.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw530/x86_64-530-posix-seh-rt_v4-rev0/mingw64 --with-gxx-include-dir=/mingw64/x86_64-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-isl-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw530/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw530/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw530/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw530/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-posix-seh-rev0, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw530/x86_64-530-posix-seh-rt_v4-rev0/mingw64/opt/include -I/c/mingw530/prerequisites/x86_64-zlib-static/include -I/c/mingw530/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw530/x86_64-530-posix-seh-rt_v4-rev0/mingw64/opt/include -I/c/mingw530/prerequisites/x86_64-zlib-static/include -I/c/mingw530/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw530/x86_64-530-posix-seh-rt_v4-rev0/mingw64/opt/lib -L/c/mingw530/prerequisites/x86_64-zlib-static/lib -L/c/mingw530/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: posix
gcc version 5.3.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)

目标行应该写成x86_64


1
我还忘了说明我之前也安装了32位版本,但我还没有删除它。 - lads
1
我认为问题在于我在安装MinGW 64位之前安装了MinGW 32位,当我使用g++时它会进入32位版本。当我运行g++ -v时,我有目标:win32。 - lads
@lads 可执行文件对于两者都是相同的,因此 shell 无法知道您要执行哪个版本。要么使用可执行文件的完整路径,要么摆脱 32 位版本。或者只需拥有两个不同的环境,具有两个单独的 PATH,一个用于 32 位,另一个用于 64 位。 - Luaan
1
@lads 你怎么启动你的MinGW shell呢?你尝试直接运行C:\Program Files\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0\mingw-w64.bat了吗? - nwellnhof
@nwellnhof 你说得对。谢谢。之前我只是启动了cmd窗口。但现在我遇到了一个奇怪的错误 g++ -m64 main.cpp -o main.exe http://pastebin.com/wjBtFv5c - lads
显示剩余3条评论

0

在 Windows 10 Home / AMD Ryzen 5 3400G 上遇到了这个问题。

由于某种原因,mingw64 安装程序决定使用主机 i686-8.1.0-win32-dwarf-rt_v6-rev0

解决方案是从另一台笔记本电脑复制 mingw64 的 x86_64-w64-mingw32 安装。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接