Netbeans和MinGW-w64

4
我正在尝试在win7 64位上配置我的NetBeans,以便与MinGW-w64一起使用。因此,我在%PATH%变量中放置了编译器的以下路径:
C:\mingw-w64-bin_i686\mingw\bin
C:\minGw-MSYS\msys\bin
C:\mingw-w64-bin_i686\libexec\gcc\x86_64-w64-mingw32\4.7.0

然后我打开了NetBeans,并进行了配置:

NetBeans中的配置

我尝试编译一个小测试程序,但我收到了以下错误:

g++.exe: 致命错误: -fuse-linker-plugin,但未找到liblto_plugin-0.dll编译终止。 make[2]: *** [dist/Debug/MinGW-Windows/test.exe] 错误1 make1: [.build-conf] 错误2 make: ** [.build-impl] 错误2 构建失败(退出值2,总时间:1秒)

我确实在C:\mingw-w64-bin_i686\libexec\gcc\x86_64-w64-mingw32\4.7.0中有这个文件

我缺少什么?

3个回答

17

经过几个月的推迟,我终于坐下来做了这件事。我可能会在我的博客上发布更详细的带有漂亮图片的文章,但是这里是一个简化版的SO版本,希望对你(和其他人)足够使用。

先决条件

如果您有能力失去它们,则删除MinGW、MSYS和CMake(我们将重新安装MinGW(显然)和MSYS,但不需要CMake,因为似乎不需要它)。

  • Netbeans或其他适合的IDE
  • 64位Windows。
  • EnvMan(可选但方便管理Windows环境变量。)

安装

MinGW-W64 C编译器和MSYS

  • 下载并安装MinGW-W64
    • http://mingw-w64.sourceforge.net/(链接在左侧菜单中,名为“WIN64 Downloads”的超链接。)
    • 有很多版本,可能有点复杂。我们选择mingw-w64-bin_i686-mingw_20111220(尽管结尾的数字可能不同),这基本上表示我们想要带有Windows二进制文件的版本。
    • 下载完成后(大约300mb,所以需要10分钟左右),提取到C:\MinGW-W64或类似位置。确保路径中没有空格!
  • 下载适用于MinGW-W64的MSYS
    • 花了一点时间搜索
    • http://sourceforge.net/apps/trac/mingw-w64/wiki/MSYS 是相关 IT 技术的维基百科,http://sourceforge.net/projects/mingw-w64/files/External%20binary%20packages%20%28Win64%20hosted%29/MSYS%20%2832-bit%29/ 是我找到的下载链接,我选择的版本是 MSYS-20111123。下载完成后,将文件提取到 C:\MSys 或类似路径中。确保路径中没有空格!

      设置

      • 将 'C:\MinGW-W64\bin' 添加到 Windows PATH 环境变量。
      • 将 'C:\MSys\msys\bin' 添加到 Windows PATH 环境变量。
      • 启动 Netbeans 并进入 工具 -> 选项 -> C/C++。
        • 在“工具集”下点击“添加”,选择 MinGW-W64 的基目录 (C:\MinGW-W64\bin)。
        • 如果未自动检测到,请从“工具集系列”中选择“MinGW”,然后单击“确定”。
        • 将'C 编译器'设置为 C:\MinGW-W64\bin\x86_64-w64-mingw32-gcc.exe。
        • 将'C++ 编译器'设置为 C:\MinGW-W64\bin\x86_64-w64-mingw32-g++.exe。
        • 将“制作命令”设置为 C:\MSys\msys\bin\make.exe。

      那就完成了!

      需要注意的是,我正在使用该系统编译一个库文件供JNI使用,因此还需要一些额外的步骤,但由于这里不需要,所以我省略了它们。不过我写了一个简单的“Hello World”程序,编译并运行得很好。

      祝你编码愉快!


1
非常有帮助,谢谢。只有一点小问题:如果要使用的话,最好使用EnvMan 1.4版本:http://env-man.blogspot.kr/search?updated-min=2009-01-01T00:00:00%2B11:00&updated-max=2010-01-01T00:00:00%2B11:00&max-results=2 - Keugyeol
1
我认为可以安全地假设,除非软件明确说明必须使用特定版本,否则应该使用可用的最新版本。我只是碰巧链接到了1.3版本,因为那是我知道的版本。感谢更新,已经完全替换了链接。 - RyanfaeScotland
尽管我们在Netbeans中提供了完整的工具链路径,但仍然必须将MinGW二进制目录添加到Windows路径中(如此答案所示)。我认为原因与msys有关。 - Jerome
请问您能否提供您的博客链接? - eeze
当然,@eeze,这是你要的(虽然我从来没有在那里写过这个,但是这篇文章描述了我遇到的问题,导致我找到了解决方案,并且可能有其他有用的帖子:http://workingwithcomputervision.blogspot.com/2012/08/problems-setting-up-64-bit-opencv.html)。 - RyanfaeScotland
1
这非常有帮助。 - Jafar Zuabi

0

通过您喜欢的互联网搜索引擎进行一些搜索后,我找到了一种更好的方法,可以快速将MinGW-x64添加到Windows 64位系统中。在Sourceforge网站上有MSYS2

在遵循安装说明并获取最新软件包时,可能会在Sourceforge的主要镜像站点上出现超时。如果是这样,请按照镜像站点更新说明更新各自MSYS2目录(例如/etc/pacman.d)中的三个pacman文本文件。然后按照MSYS2安装说明完成软件包更新。

在MSYS2软件包中包含了gcc、llvm、make、dmake等内容。以下是从MSYS2命令行shell(例如bash)使用的命令,用于安装GNU make实用程序:

$ pacman -S msys/make

可执行文件将被放置在 MSYS2 命令行中的 /usr/bin 目录下。至于配置 Netbeans 中 make.exe 的位置,Windows 路径为:

MSYS2 installation directory\usr\bin\make.exe

(例如:C:\msys64\usr\bin\make.exe)。

为了成功地使用Netbeans构建C++,我使用了GNU make包(例如msys/make)。然后,为了使用Netbeans管理的默认make文件,并且不干扰Windows安装中的其他C++编译器(例如Visual Studio、Intel、Visual Studio中的CLang等),请从MSYS2提供的MinGW-x64命令shell运行Netbeans。通过这种方式,在Netbeans内部终端窗口中,环境变量和其他东西如下所示:

ls
rm
mkdir

将指示成功执行和编译。我通过导航到MSYS2安装的快捷方式打开了MinGW-w64 Win64 Shell。然后,将Netbeans Windows桌面快捷方式的目标属性值粘贴到MinGW-x64 shell命令行中:

$ "C:\Program Files (x86)\NetBeans 7.4\bin\netbeans.exe"

然后最终可以创建相应的调试和发布对象和可执行文件。我还修改了Netbeans项目输出,使其位于MSYS2目录结构内。然后在MSYS2 MinGW-x64 shell中运行可执行文件。从Netbeans IDE运行会产生以下错误信息:

无法启动pty进程:应用程序以退出代码-1073741515(0xc0000135)失败。

如果MSYS2路径在计算机系统的PATH环境变量中,则可能不会发生此错误。


0

我刚刚下载了最新的自动构建版本,解压后将主要的二进制目录添加到路径中,并运行了以下命令:

x86_64-w64-mingw32-gcc test.cpp -o test.exe

并且

x86_64-w64-mingw32-gcc -fuse-linker-plugin test.cpp -o test.exe

它可以工作。i686变体也是如此。你的IDE出了问题。或者你不应该乱动文件。或者你不应该删除前缀。说真的。

附注:你只需要将主要的“bin”目录添加到PATH中,其他都是错误的。


嗯……如果我没有将“C:\minGw-MSYS\msys\bin”加入路径中,它就找不到MKDIR。而且我看过一个例子,在那个例子中,他们确实改变了目录的名称。 - Idov
Idov: 是的,对不起,我指的不是那个。我指的是只针对工具链(gcc、ld)。如果可以的话,尽可能不要将mingw*/libexecmingw*/i686-w64-mingw32下的任何内容添加到PATH中。 - rubenvb

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