用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,输入以下相应命令检验是否已经成功安装并配置好JDK:java、javac,输入java -version可以查看Java版本信息
2、安装eclipse
到eclipse的官网上找一个c++版本的
下载地址:http://www.eclipse.org/downloads
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
- 将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
这样就可以创建一个使用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目录
- 添加链接库的存放地址地址和库名称