Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1695575
  • 博文数量: 584
  • 博客积分: 13857
  • 博客等级: 上将
  • 技术积分: 11883
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-16 09:34

分类: C/C++

2011-04-10 23:23:16

Dev-cpp是一个GCC在win32下的IDE程序,用Dephi 5编写,只有2M
具有以下功能:
   1.集成编译环境,支持工程模板.
   2.支持语法加高,自动注释,对中文的支持也不错.
   3.支持CVS集成
   4.支持源码分析,可以形成类树图.
   5.支持扩展包.
Dev-cpp官方发布有集成MinGW32 gcc编译套件,最新支持GCC 3.3(2003-7-15)
也可以支持MinGW其它版本和Cygwin gcc的各个版本.不过需要手动设置.
Dev-cpp支持多语言环境,中文版界面由我的好友nyra(nyra@sohu.com)维护,如果
大家发现中文版有翻释问题可以找她.如果有兴趣翻译帮助文件,也请联系.
Dev-cpp有两个常用版本,一是开发中的5.0beta,最新一版是4.9.8.0
另一个是4.01,是4.0的修正版(其中集成Gcc 2.9.5),前者功能较多,而后者较稳定.
图形化环境我就不多说了,和VC的用法类似,其实大家问题多集中于Gcc本身.
GCC, GCC和gcc不同的东西.前者是Gnu的编译环境,包括gcc, g++, gcj等多种语言的编译器
和as(汇编), ar(库), ld(联接器)等一系统编译工具.gcc是GCC中C语言的编译器,g++是
C++语言的编译器.
GCC被移植到多种操作系统中,在Win32上最著名是MinGW和Cygwin两个版本,MinGW的全称是
Minial GCC for Windows,如题,它是Win32上的一个小型GCC,只包括最少的GCC组件<10M
而Cygwin就是一个Unix On Windows的大系统,全部下载有300多兆,Unix下的大多数软件
在Cygwin中都有移植版,包括X-windows.还有一个for Dos-32 的GCC,名叫Djgpp,与Mingw的
目标类似,不同的是它是一个以MZ为目标程序的可以在非Win32环境下运行(例如FreeDOS)
它们都移值了GCC官方发布的最新版GCC.
下面集中力气讲GCC 3.2以及Mingw移植版.
GCC3.2(G++)号称是对C++标准支持最好C++编译器,真否不确.(因为VC7.0也说它是)但是
有一点很明确,在没做特殊配置的情况下,G++只支持标准C++语法,不再对早期的非标准
C++语法进行支持.所以VC下的C++程序很多不能运行.BC++3.1等(很多教科书的目标平台)
的例程也不支持.所以,请在问为什么我的程序在XX编译器中可以运行,而到了Dev-cpp
中不能编译之类问题前,首先请查看你的程序是不是真正的没错.
Dev-cpp对以cpp,cxx为扩展名的文件默认使用G++编译,所以如果你的C语言程序请以c为扩展
名,不然很可能出错,请记住C和C++是两种不能的语言,它们并非完全兼容.
C++的标准是C++ 98,而语言的新标准是C99,但它们都要收费,推荐B.S.的C++ Programming 
Language做为C++的标准参考书.当然如果以C++ 98标准为参考也不错.
MinGW包括:gcc,g++,gdb和binary utils以及一个msys环境(单独下载),前面几项都是命令行
程序.MinGW除了标准c++库和标准C库,还包括一个称为w32api的Win32库和openGL库.
目录结构如下:(如果你下载的Devcpp,它们在Dev-cpp/mingw32目录下
/bin      可执行程序(壳)
/include  头文件
/mingw
/usr/   (真实的)可执行程序
/lib   库
Dev-cpp的默认安装中,相关的路径都已经设好.如没有设好,很难编译.
设置方法是在选项/编译环境菜单中设置.
注意新的C++头文件在/include/g++/3.2/下
下面回答一些问题:
1.多朋友问到在devc++下面做图形,抱歉,devC++没有graphics.h文件的,好像不能作图(具体解决办法,期待高手补充.....)
graphics.h是borland的Dos图形库的头文件,win32下不支持,请使用win32的绘图方法GDI或DirectDraw.
2. Dev C++ 是用dllwrap.exe来做DLL的(原话是这样的,期待高手解释.......
是的,dllwrap语法是:
dllwrap 选项 目标文件(即*.o)
常用选项有:
  --def DEF文件名
  --dllname <名称>  DLL的名称
  --implib <导入lib名> 输出DLL导入库
3.关于库的引用
GCC的库名为libXXX.a其中XXX为库名,编译时只需要增加选项-lXXX即可。GCC的目标文件与
VC使用的Coff以及Borland使用的OMF格式都不一样,不能直接使用.需要重新编译生成.a的库。
GCC库管理程序是ar,它的用法是:ar rcs 库文见名.a 目标文件.o  哦,有人说过了:)
4.关于调试及目标文件的大小.
Dev-cpp的调试一直不是很好用,原因是它不是直接调试,而是调用了GDB这个命令行程序,
所以有的地方打不到断点, 有时有的语句并不执行,所以乱跳的感觉,实际上,只要仔细
观察一下,它不执行和不能打断点都是很有理由的,不像VC在空行上也可以打断点.
目标文件很大是因为标准IO库,新的标准IO库是全用模板生成的,所以静态库相当大.
而GCC一直没有把它做成动态库,所以每次程序都要联接到几百K.另外,GCC模板的生成也
很笨(或者说为了附合标准),所以目标程序很大.不过在mingw中有一个strip的程序.
可以为它减肥.
想要产生小的程序有几个方法:
0.优化程序!!!!
1.全部使用动态库,包括C运行库.
2.不要调试选项.
3.使用面向程序大小的的优化选项.

阅读(734) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~