`
metaphy
  • 浏览: 338651 次
  • 性别: Icon_minigender_1
  • 来自: 大西洋底
社区版块
存档分类
最新评论

Windows下用Eclipse搭建C/C++开发环境

阅读更多
本文假定你已经熟悉Java,Eclipse的安装,并能顺利启动和运行Eclipse.此外因为各软件版本在不断更新,有些地方可能不准确,以最新的、原文资料为准。

距上一次写和调C++程序,已经5、6年了,光阴荏苒岁月无情,现在再重新拾起来,很多东西都要从头来。Windows下C/C++的IDE有很多,我知道的就有MS Visual Studio,Borland C++等,但这些是要版权的。不要钱也有一些,但因为对Eclipse太熟了,所以就选下面要讲的Eclipse + GNU toolchain(话说toolchain这个词很形象).

1. 首先下载Eclipse for C++, 最新版是基于Eclipse 3.5.1的,叫做galileo(伽利略),上个版本3.4貌似叫做ganymede(木卫三)。下载地址:http://eclipse.org/downloads/,选择32bit for windows,文件名叫 eclipse-cpp-galileo-SR1-win32.zip



2. 解压,直接运行。注意,至少JDK你已经安装了(我用的是JDK1.6)。运行后一个灰蓝色的welcome页面出现,进入Tutorials。学东西先读Tutorial是个好习惯。

3. 首先了解一下什么是CDT,就是 C/C++ Development Toolkit,bulabula... 然后它说,这个东西没包含C/C++的编译器、调试器,你得自己弄。

4. 那就继续看。Windows下,MinGW和Cygwin 是获取GNU toolchain的2种主要方式(GNU toolchain,GNU下一系列的工具包,我的理解主要是gcc这一系列工具)。这两者最大的区别是MinGW使用Windows C的运行库,叫做mscvrt,而Cygwin使用了一组基于GPL的DLLs(GPL协议具有传染性,使用GPL协议下的软件后你自己开发的东西也要遵守GPL协议),因此MinGW避开了GPL协议。

5. MinGW和CDT能很好的整合。好吧,我们装MinGW(MinGW是Minimal GNU for Windows的意思,这个下载过程相当慢,我下了大半个小时)。当前版本是MinGW-5.1.6.exe,我一股脑来了个Full install。装完后才发现这么一句:Do not install the MinGW Make feature as the MSYS version of make from step 5 is a more complete implementation of make.(不要安装MinGW的Make, 第5步的MSYS是个更好的实现方案)

6. 为了避免将来可能遇到的问题,卸了重装。这里是完整的安装步骤:
1)下载MinGW,地址 http://sourceforge.net/projects/mingw/files/
2)安装MinGW base tool和g++编译器(不要安装Make);我把除了Make之外的都装了,里面居然还有个Ada的编译器


3)当前版本(它是指MinGW-5.1.3,不过我下的5.1.6同样也没有)没有装gdb debugger, 下载它:http://downloads.sourceforge.net/mingw/gdb-6.6.tar.bz2
4)解压gdb-6.6.tar.bz2 到你安装MinGW的地方,gdb-6.6/下也有一系列bin,inclue文件夹,直接拷到MinGW下面覆盖进去即可
5)如果要用Makefile,请下载 MSYS-1.0.10.exe,MSYS是make及命令行的一个实现。嗯,要用。下载地址 http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe
安装界面是个命令界面,写2个”y”,然后告知MinGW的安装路径即可。


OK,安装部分就完成了。下面写2个小例子。

7. 首先创建一个简单的HelloWorld C++工程,这个很简单,按Wizard向导建一个模板即可。


Run的时候选Run Configurations, 然后双击C/C++ application建一个新的run configuration就行。


8. 下面建一个Makefile类型的工程。选择New C++ Project -> Makefile project -> Empty Project, 我们建一个空的项目,建完后里面什么也没有(除了2个.project文件),这时,我们要建一个源文件和一个make文件:main.cpp 和 makefile,如下,都建到根目录下:

/*
 * main.cpp
 */

#include <iostream>
using namespace std;

int main () {
    // Say Hello five times
    for (int index = 0; index < 5; ++index)
      cout << "HelloWorld!" << endl;
    char input = 'i';
    cout << "To exit, press 'm'" << endl;
    while(input != 'm') {
        cin  >> input;
        cout << "You just entered " << input
             << " you need to enter m to exit." << endl;
    }
    exit(0);
}

all: hello.exe

clean:
	rm main.o hello.exe

hello.exe: main.o
	g++ -g -o hello main.o

main.o:
	g++ -c -g main.cpp

注意,makefile里的行首缩进用的是Tab而不是空格。如果编译时提示 No separator...就是这里有问题。

9. Ok, 选中工程,点Build(或点那个小锤子),你会发现这个错误:(Cannot run program "make": Launching failed),啊,我们的make.exe还没设。选中工程,直接Alt-Enter到工程属性页,把msys的bin加到Path里。


10. 重新build, 大功告成。
分享到:
评论
34 楼 liang86liang 2012-10-17  
jkleeo 写道
很深奥啊.
C/CPP只有在大学的时候听说过. 毕业后就一直搞java了 = =\惭愧


同样惭愧啊。
33 楼 jinkingmanager 2010-08-04  
偶尔会用到C++,都用codeblocks 8,小巧强大。最新的版本块头好大啊,没敢用……
32 楼 luck_dream 2010-06-08  
如何打开智能提示啊
31 楼 hanzhongdong 2010-05-10  
很好用的东东。
30 楼 雨过白鹭洲 2010-05-05  
一直用Eclipse做Java和C/C++,挺好用的

特别是代码层面的支持非常好,调试功能也够用了
29 楼 nj_first 2010-04-24  
是啊,如何使用第三方库,例如:boost
28 楼 chris_zley 2010-04-12  
老实用VS更好吧
27 楼 cyberniuniu 2010-04-12  
用netbeans开发c/c++也很爽。
26 楼 温柔的重手 2010-04-10  
还是vs爽
25 楼 yjs200811 2010-03-21  
熟悉eclipse,一直想在eclipse中写c++呈现 终于可以写了
24 楼 jkleeo 2010-03-19  
很深奥啊.
C/CPP只有在大学的时候听说过. 毕业后就一直搞java了 = =\惭愧
23 楼 seanhust 2010-01-24  
如何调试呢?
ps:下面的快速回复不好用啊
22 楼 seanhust 2010-01-24  
如何调试工程呢?
21 楼 seanhust 2010-01-24  
怎么设置可以调试?
还是就不支持?
20 楼 xianglei 2010-01-22  
怎么导入第三方的类库?
19 楼 風之舞 2010-01-18  
eclipse 占用的资源太多. 如果开发 windows 上的程序, 用MS提供的东西比较好. 如果开发 UNIX/LINUX 中的程序, 使用 UE 挺好的.
18 楼 mikeandmore 2010-01-18  
ray_linn 写道
很烂的plug-in,装了之后我的apanta就奇怪百出。

应该是apanta的bug

这个是for standard eclipse sdk的。不知apanta搞了什么特殊的修改。。。。
17 楼 ray_linn 2010-01-18  
很烂的plug-in,装了之后我的apanta就奇怪百出。
16 楼 mikeandmore 2010-01-17  
yidao620c 写道
Eclipse开发C有个很头疼 的问题:
运行下这个最基本的程序:
int main(void) {
int i;
printf("input a int:");
scanf("%d", &i);
printf("i = %d", i);
}

Console中等你先输完值后,"input a int:"这句话才显示。汗。
必须在scanf前面加fflush(stdout);才行。
int main(void) {
int i;
printf("input a int:");
fflush(stdout);
scanf("%d", &i);
printf("i = %d", i);
}
狂汗~~~~~~~~~~~

就是这样子啊
printf是按照\nflush的。
否则是在buffer里的。。。
15 楼 vieri122 2010-01-17  
yidao620c 写道
Eclipse开发C有个很头疼 的问题:
运行下这个最基本的程序:
int main(void) {
int i;
printf("input a int:");
scanf("%d", &i);
printf("i = %d", i);
}

Console中等你先输完值后,"input a int:"这句话才显示。汗。
必须在scanf前面加fflush(stdout);才行。
int main(void) {
int i;
printf("input a int:");
fflush(stdout);
scanf("%d", &i);
printf("i = %d", i);
}
狂汗~~~~~~~~~~~

在 我 的 eclipse3.5 cdt下 没y有你 说的 情况

相关推荐

Global site tag (gtag.js) - Google Analytics