用eclipse + msys2轻松实现Windows下开发、编译Linux C++程序

用惯了IDE,很不习惯vi写代码,就算做了再多的优化,也是距离IDE有很大的差距。eclipse+msys是一个很好的选择,网上很多都是eclipse+mingw的,不太好用,因为mingw没有终端,更重要的是会缺少很多lib啊,没终端就没法下载安装嘛。也考虑用过cygwin,可是这孙子是在是太庞大了,安装使用啥的都很麻烦,最要命的是我搞了测试程序发现用cygwin编译以后,eclipse的console里边打印不出来东西,这就郁闷了,本来就是用来写个小程序测试自己功能的,后台没输出还测试个毛。可能有什么地方没搞好,或者什么原因,但是我懒得去Google了,干脆换个完事,用精简的、安装使用方便的msys多好。msys最好的地方是安装东西还挺方便,它有个pacman,有点像Linux的yum,需要啥,直接命令行一装,爽歪歪。

1、首先安装java

因为eclipse是依赖java运行的,所以要先下个jdk

(1)JDK的下载和安装

 

JDK官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

 

(2)JDK环境变量的配置

 

 安装好JDK后,配置环境变量: 

 

依次选择计算机>右键属性”>高级系统设置>高级>环境变量,在系统变量:

 

点击新建,新建一个环境变量JAVA_HOME,其值为JDK安装的目录,如:C:\ProgramFiles\Java\jdk1.6.0_33

 

选择Path变量,然后点击编辑,在变量值栏最前面加入如下值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(不要漏了最后的分号,用于与后面的变量值分隔开)

 

点击新建,新建一个环境变量CLASSPATH,其值为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar(不要漏了最前面的".",它指当前目录)

配置好环境变量后,按确定退出环境变量配置,可以按"WIN+R"打开CMD,输入以下相应命令检验是否已经成功安装并配置好JDKjavajavac,输入java -version可以查看Java版本信息

2、安装eclipse

到eclipse的官网上找一个c++版本的

下载地址:http://www.eclipse.org/downloads

用eclipse + msys2轻松实现Windows下开发、编译Linux C++程序

 

3、安装Msys2

 

 

  • 下载Msys2
    Msys2官网 下载最新版Msys2。
    可以下载exe安装包,也可以下载压缩包,解压出来的文件夹为msys64(这里使用64位)。

  • 安装软件
    Msys2使用pacman管理软件。pacman的基本使用如下:

    pacman -S <packge-name>     # 安装软件
    pacman -U <gz-file>         # 安装本地包,其扩展名为 pkg.tar.gz
    pacman -Syu                 # 同步Msys2源,并更新 
    pacman -Sy                  # 仅同步源 
    pacman -Su                  # 更新系统
    pacman -Sy <packge-name>    # 同步源后再安装软件
    pacman -R <packge-name>     # 该命令将只删除包,不包含该包的依赖。
    pacman -Rs <packge-name>    # 在删除包的同时,也将删除其依赖。
    pacman -Rd <packge-name>    # 在删除包时不检查依赖。
    pacman -Ss <keywords>       # 这将搜索含关键字的包。
    pacman -Qi <packge-name>    # 查看有关包的信息。
     

     

    安装Msys2后,或解压Msys2后,第一次运行下msys2_shell.cmd,提示第一次设置初始化完毕后,就可以运行Msys2.exe、mingw64.exe或mingw32.exe(在msys2的安装目录下,其实就是msys2的终端了,熟悉的bash一样的),主要区别:

     

    # mingw32 优先使用 msys64/mingw32 下的工具;
    # mingw64 优先使用 msys64/mingw64 下的工具;
    # msys2 两个都不使用,只用自身 msys 的工具;

     

 这是啥意思呢?msys自身相当于一个mini的Linux小系统,然后会有自己的gcc、make啥的。mingw64、mingw32同样的,相当于有3个小Linux系统,那么启动对应的exe,会有对同一个工具的使用优先顺序。

  • 升级msys2

一般第一次打开msys2用“pacman -Syu”全面升级,然后会提示关闭终端,再次打开后再一次运行”pacman -Syu”。
若是不想升级可以直接用pacman安装自需要的软件,如vim,git,gcc(即MinGw)等

  • 安装mingw64

在msys2中安装mingw64非常的简单,一行命令即可

 

pacman -S mingw-w64-x86_64-toolchain

 4、eclipse和mingw64的联合配置

  •  在eclipse中,依次点击打开“Window>preferences>C/C++>New CDTProject Wizard->MakeFile Project

,把Elf Parser勾掉,选择PE Windows Parser用eclipse + msys2轻松实现Windows下开发、编译Linux C++程序

 

 

  • 将mingw64的bin路径添加到windows的环境变量中:

添加 D:\msys64\mingw64\bin到PATH环境变量中,打开cmd就可使用gcc了,如:这是因为eclipse编译的时候会去path中找gcc和g++,如果不设置path的话,就会提示找不到gcc。

另外将mys2的D:\msys64\usr\bin也加到PATH环境中,这是因为你要是new的make project的话,eclipse对项目 Clean Project 的时候调用make clean,会提示找不到 rm。msys2的各种命令啥的都在usr/bin下边,上面咱们说的用pacman安装的各种软件也都是放在了usr/bin目录下了。

 

  • 添加”make”:
    D:\Msys64\mingw64\bin\mingw32-make.exe复制一份,重命名为make.exe,这样在windows下就可以使用make命令了。这个跟上面gcc一样的,你要是用eclipse创建一个c++的make project的话,那么eclipse编译的时候也会去找make执行文件,那么肯定是找不到了,因为mingw64中的make名字不一样嘛,改成make.exe就可以了
  • 新建project

       new ->c++ project


用eclipse + msys2轻松实现Windows下开发、编译Linux C++程序
 

这样就可以创建一个使用mingw编译的linux c++工程啦,用起来还是很顺手的

  • eclipse是怎么区分是使用cygwin还是mingw的呢?我就猜了一下

因为我之前的mingw的路径改了,所以eclipse就找不到gcc了,然后eclipse就提示出在path=。。。。中找不到,我发现那个旧的mingw的路径在path的最前边,但是我环境变量在cmd中echo出来不是这个顺序的。我猜哈,eclipse是当你选mingw的时候,他会在path中搜带mingw字符串的,放在最前边,那么找gcc的时候优先在那个路径找。选择cygwin也是一样。

 

  • 修改编译参数、添加include文件和依赖库                                                                                                如果要是new的make project的话,那就直接自己修改makefile就可以了,但是要是new的c++project呢?找到工程,右键->Properties->c/c++ Build->Settings->Tool Settings下边即可修改,比如添加include目录
    用eclipse + msys2轻松实现Windows下开发、编译Linux C++程序
  • 添加链接库的存放地址地址和库名称                 
    用eclipse + msys2轻松实现Windows下开发、编译Linux C++程序