在代码块中使用 mingw gcc 构建 64 位 exe

Posted

技术标签:

【中文标题】在代码块中使用 mingw gcc 构建 64 位 exe【英文标题】:Building 64 bit exe using mingw gcc in codeblocks 【发布时间】:2015-02-17 19:43:13 【问题描述】:

我正在尝试使用 minGW 64 位构建一个 64 位 exe。可以从here 获得(由于项目正在从sourceforge.net 转移到mingw-w64.org,我建议使用mingw-w64.org)。现在我的机器是 64 位机器,当我通过编译器构建代码时,我得到了一个 32 位 exe。这是程序的输出

-------------- Build: Debug in TestCodeBlocks (compiler: MinGW GCC - 2/17/2015)---------------

i686-w64-mingw32-g++.exe -Wall -std=c++98 -g  -c C:\Users\admin\TestCodeBlocks\main.cpp -o obj\Debug\main.o
i686-w64-mingw32-g++.exe  -o bin\Debug\TestCodeBlocks.exe obj\Debug\main.o   
Output file is bin\Debug\TestCodeBlocks.exe with size 58.17 KB

关于为什么我可能会取回 32 位 exe 的任何建议?

这就是我在代码块中的工具链的样子

更新:

我下载了 64 位 Mingw gcc 编译器,这就是我的设置的样子

但是当我尝试运行我的程序时,我得到了

x86_64-w64-mingw32-g++.exe -Wall -std=c++98 -g -m32  -c C:\Users\admin\TestCodeBlocks\main.cpp -o obj\Debug\main.o
ar  -o bin\Debug\TestCodeBlocks.exe obj\Debug\main.o   
ar: no operation specified
Process terminated with status 1 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))

【问题讨论】:

【参考方案1】:

64 位 g++ 的名称为 x86_64-w64-mingw32-g++.exe

确保您使用的是正确的工具链。

确保正确的 g++ 位于 PATH 上并且未被其他版本的 g++ 隐藏。

更新

使用64bit MinGW 版本。

另外,请参阅Mingw-w64 Downloads。

【讨论】:

i686- 前缀表示您使用的是 32 位 MinGW。 所以在降级新的 mingw gcc 之后。当我尝试构建它时,我收到消息“对不起 - 这个程序是在没有插件支持的情况下构建的” 使用不带前缀的.exe文件,即g++.exear.exe,如here所述。 1) g++ -m32 将构建 32 位二进制文​​件,请检查您的项目配置文件设置。 2) 将“动态库链接器”更改为g++ @DmitrySokolov mingw-w64 不再是双目标(即你不能只使用-m32 来切换),according to here

以上是关于在代码块中使用 mingw gcc 构建 64 位 exe的主要内容,如果未能解决你的问题,请参考以下文章

exec: "gcc": executable file not found in %PATH%

x86_64-w64-mingw32-gcc.exe:错误:CreateProcess:没有这样的文件或目录

使用 mingw-w64 和 cmake 构建 32 位和 64 位应用程序

我在哪里可以找到 `mingw64/mingw-w64-x86_64-gcc-libs` 8.2.0-3 的源代码包?

mingw64 构建 Geos

如何将使用sysioctl.h的代码移植到MinGW gcc中?