在windows7中设置MinGW以编译可移植的C++;代码

在windows7中设置MinGW以编译可移植的C++;代码,windows,compilation,path,mingw,Windows,Compilation,Path,Mingw,前言:我真的不喜欢在Visual Studio和Windows中编写和学习C/C++以及编译和使用它的方式。我更喜欢使用vim和g++的Ubuntu,但除此之外,我还想建立一个良好的基于Windows的工作环境 强>问题< /强>:基本上我正在用记事本+ ++学习C++,并把MinGW看作是我的编译器。我很难找到好的答案,如何最好地设置它,编译代码所涉及的所有细节,以及它如何依赖于MinGW的dll文件 似乎我必须在C:\MinGW\bin文件夹之外设置编译路径,但即使这样,我也不得不在同一个文

前言:我真的不喜欢在Visual Studio和Windows中编写和学习C/C++以及编译和使用它的方式。我更喜欢使用vim和g++的Ubuntu,但除此之外,我还想建立一个良好的基于Windows的工作环境

<>强>问题< /强>:基本上我正在用记事本+ ++学习C++,并把MinGW看作是我的编译器。我很难找到好的答案,如何最好地设置它,编译代码所涉及的所有细节,以及它如何依赖于MinGW的dll文件

似乎我必须在C:\MinGW\bin文件夹之外设置编译路径,但即使这样,我也不得不在同一个文件夹中执行程序。否则我会得到一个错误,我缺少一个dll

虽然这不仅是实际开发中的一个难题(不要说迁移到Linux,请阅读前面的内容),而且还妨碍了我的代码在其他windows系统中的移植性。也许我不知道如何正确地创建可执行文件并用安装程序打包它们的文件。如果这正是我需要学习的,那么也许可以为我指出正确的方向。

下载mingw。使用安装程序安装。这将创建一个名为
open\u distro\u window.bat
的文件。在桌面上创建一个快捷方式。双击它,它将打开一个窗口,其中设置了路径和其他环境变量,以便您可以编译、链接等(在您选择的任何目录中)


为了让生活更简单,一旦你创建了快捷方式,右键单击并编辑它的属性——将“start in”目录更改为你正在开发的项目的根目录。

你写道:
我更喜欢使用vim和g++的Ubuntu

我现在使用了很长时间的“msys/mingw”,我很高兴

MSYS是GNU实用程序的集合,如bash、make、gawk和grep,允许构建依赖于传统UNIX工具的应用程序和程序

旨在补充MinGW和cmd外壳的不足之处。。将源代码放在那里的
c:\msys\1.0\src
文件夹中,它们放在右边


我也试过了,很久以前的“cygwin”。您需要做的就是将GCC DLL放在路径中的某个位置(通过将
C:\MinGW\bin
添加到您的路径),或者使用“-static”作为链接器参数编译所有代码以静态方式链接到GCC运行时DLL。分发可执行文件时,需要确保libgcc*.dll和libstdc++-6.dll都安装在可执行文件旁边。(如果您仍在使用MinGW.org的工具链,那么是时候升级到MinGW-w64了,因为它没有
mingwm10.dll
或其他名称)

< > GCC DLL与VisualStudio的C++重新分配表非常相似;要运行使用特定VS版本生成的代码,您需要DLL。静态链接是避免该问题的唯一方法


另外,获得一个像CMake这样的跨平台构建系统。这会让你的生活变得更轻松。

“但即使这样,我也不得不在同一个文件夹中执行程序”——也就是“同一个文件夹”,你指的是C:\MinGW\bin吗,或者你是指编译可执行文件的文件夹?我建议你遵循文档:@BenjaminLindley是的,这就是我所说的文件夹。你的说法对我的问题完全模棱两可。“那个”是哪个文件夹?再读一遍我的问题。@DavidHeffernan我知道,老实说,这对我没什么帮助。我不太清楚这些东西是如何影响我的C++环境的。就像我说的,我最关心的是它如何影响代码的可移植性。在MinGW\bin之外运行并不是模拟一些测试代码的最大问题。谢谢。这看起来会有很大帮助。“谢谢你,这很有帮助”通常是通过点击大零上方的三角形(左边)和/或下方的复选框来表达的(在这个网站上)。我不能对你的评论投赞成票,因为我刚刚做了这个账户,而且没有足够的声誉。我不知道复选标记,但这似乎对我也不起作用。别担心,我不是想抢走你宝贵的代表积分@Aerlusch:不是我关心代表积分,而是投票和接受答案有助于其他人找到有用的答案。好吧,我不完全确定MSYS会给我提供什么。看来这个或Cygwin对于给我一个理想的开发环境非常有用。我会详细调查的\n\n老实说,我认为我最关心的是我的可执行文件如何变得非常依赖于MinGW的dll文件,并正确地进行路径选择以正常工作。msys只是bash,与MinGW一起创建完美的MinGW的dll文件。噢,哇,这非常有用,谢谢。对于一个主要从事Java和Python工作的人来说,一开始就很难理解程序中发生了什么以及程序的组件是如何链接的。当安装了可再发行文件时,是否将其添加到您的系统路径中?为了让任何需要它的程序能够接触到它?@Aerlusch:Windows使用了一个称为winsxs的漂亮的魔法系统(至少在msvcr100之前,不知道到底发生了什么变化,但确实发生了一些变化)来调节所有不同的msvcr*版本。简而言之,是:所有需要msvcrnn.dll文件的程序都应在安装可再发行文件后工作。这样,您就不必关心自己复制C运行时DLL了。可再发行文件仅适用于MSVC,但不适用于MinGW GCC。