| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 44051 人关注过本帖, 30 人收藏
标题:CodeBlocks简易教程--共同学习进步(完成)
只看楼主 加入收藏
取消关键字高亮
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
结帖率:98.48%
收藏(30)
已结贴  问题点数:20 回复次数:35 
CodeBlocks简易教程--共同学习进步(完成)
教程前言:

    使用了一段时间的VC6后,由于各种功能的需求,又不想安装VAX这类的商业插件,还因为VAX在Docments目录下面狂创建一堆的文件让人不爽,终于放弃了这个IDE,转而使用开源免费的CodeBlocks,这个IDE基本上满足了偶的需求,做为一款比较中量级的IDE,基于10.05版制作的CB绿色版才21.3MB左右,解压出来也不过100多MB左右,相比于巨无霸VC6、VS系列,非常小巧好用,便于U盘携带,是Windows下面学习C/C++的最佳助手。

    在很多的编程论坛里,看到很多的C初学者提出的各种编程使用、编译器选择问题,大致是不知道怎么选择工具,不知道在哪里写代码,编译,运行,调试,往往这些问题基本上入门的人或是有一定水平的人跟本不愿回答,因而很容易造成初学者无所适从。本文是本人自己处理的Codeblocks 10.05绿色版的配套使用说明,部分引用网上已有的相关知识,以图文的方式带您快速了解这款英文版集成开发环境,同时讲解其内置编译器MinGW(Gcc)命令行编译的基础知识,帮您扫除C/C++学习道路上的障碍,了解IDE和编译器是如何协作,从而更快的进入学习状态,走进编程的大门。

    绿色版下载地址:
    http://u.
    大小:CodeBlocks.7z 21.3MB

    绿色版说明:
    基于codeblocks 10.05制作,内置MinGW (gcc)4.4.1编译器

    * 更新了10.05里面的win32 - sdk为3.17新版,支持ddk/sdk/dx/gdi++编程
    * 重新编译了cb的帮助官方文档,减少了chm文件的尺寸。
    + 添加Depends.exe,来自微软的SDK XPSP2版本,用于查看文件依赖。
    + 添加Spy++,来自SDK XPSP2版本,用于查看窗口消息和信息的。
    + 添加c/c++标准库函数参考大全(中英版),来自cpprefence和网络。
    + ResEd 2.0.0.6c版,来自RadAsm汇编的一个用于资源编辑的免费软件。


    以上新增加的内容均放在/add目录下面,部分新增工具使用见下面的教程。
   

CodeBlocks简介:
    Code::Blocks是一个免费、开源、跨平台的C/C++ IDE,支持Windows、Linux、MacOSX。同时他还支持各种不同的编译器,如 GNU/MinGW C/C++,VC++ 6.0/2003/2005/2008,Borland C++,Digital Mars等等各种不同的编译器。经过14个组员长达2年对Code::Blocks的全部重写,终于发布了正式版8.02,最新版是10.05版,这个版本更包括了对构建基于wxWidgets的跨平台GUI程序的支持,堪比Visual C++。
wxWidgets则是一个十分优秀的跨平台的GUI框架,用其编写的C++应用程序可以十分方便地迁移到不同的系统上去。

    Code::Blocks + wxWidgets两个同是支持跨平台的IDE和框架,使得跨平台的编程非常方便。然而Code::Blocks虽然包含了对wxWidgets的支持,但是却没有包含wxWidgets的构建环境,我们必须手动进行配置(多说一句,实际上是因为这个DD有点大,Dev CPP的相应编译包居然达到300MB之大,所以没法包含在官方的安装版本中。)

    官方网站:  http://www.codeblocks.org
    二进制下载:http://www.codeblocks.org/downloads/26
    源代码下载:http://www.codeblocks.org/downloads/25

界面预览:
图片附件: 游客没有浏览图片的权限,请 登录注册


一。CB中一些常用设置和配置文件。
二。工程创建
三。创建源文件的二种方式。
四。编译、链接源程序。Realase和Debug。
五。调试
六。ResEd使用,创建资源文件。
七。多工程与配置。
八。minGW命令行编译
九。走出IDE的世界,我们一样有其它编程的选择。


结束语。

一、CB中一些常用设置和配置文件。
    CB第一次使用的时候,需要进行一些简单的设置,个人认为以下几个地方设置可以搞一下,方便使用。
(1)菜单Setting/Editor/Gennerl settings,如下图所示,把字体选大一点,第二个地方就是自动括号那里,如果你喜欢自己敲括号,就取消对勾。
图片附件: 游客没有浏览图片的权限,请 登录注册

(2)菜单Setting/Editor/Code-completion and symbols browser,设置自动完成提示,如下图所示,第一个地方改成2,第二个地方往左拖,会更快的出现自动提示。
图片附件: 游客没有浏览图片的权限,请 登录注册

(3)菜单Setting/Editor/Source formatter,这里如下图所示,可以设置格式化源代码风格,使自己的程序代码更加美观,编辑中点右键选Format this file既可格式化你的源代码。
图片附件: 游客没有浏览图片的权限,请 登录注册


    CodeBlocks的配置文件存放在系统盘:\Documents and Settings\用户名\Application Data\codeblocks\一个名叫Default.conf的文件中,是一个XML格式的文本文件,如果你将CodeBlocks放在U盘上带着的话,需要把这个文件拷到U盘上,以备不同的机器上使用你自己的配置。

二、工程创建
    CodeBlocks提供类似于VC一样的工程管理,内置了很多类型的工程向导模版,我们以创建最简单的工程为例,如下图:
图片附件: 游客没有浏览图片的权限,请 登录注册


在下面的对话框里选择相应的C/C++类型。
图片附件: 游客没有浏览图片的权限,请 登录注册

然后在下面的对话框输入相关的工程名和存盘路径,就可以完成了,是不是很简单呢?
图片附件: 游客没有浏览图片的权限,请 登录注册


三。创建源文件的二种方式。
    有至少两程方式,可以在上面创建的工程中添加新文件。第一种可以上面的已创建好的目录中,直接用windows提供的创建新文件功能,创建一个空的c/c++文件,然后如下图所示,右点工程,选add files...添加进工程之中。
图片附件: 游客没有浏览图片的权限,请 登录注册

第二种方式:可以从菜单File/New/file...添加新的源文件和头文件。
图片附件: 游客没有浏览图片的权限,请 登录注册

但是编译的时候,请在菜单Project/Properties中注意一下下图设置,是否有勾选下。未勾选的情况下,该文件不会被编译。
图片附件: 游客没有浏览图片的权限,请 登录注册


四、编译、链接源程序。Release和Debug。
    OK,经过上面的步子后,我们就可以来编译生成程序了,如第一张图所示,点工具栏上最左边那个黄色齿轮,既可,如果你的程序通过编译,那么你将看到如图所示的提示信息:(图满了,下次又帖。)工具栏上有Build target可以选择Release和Debug两种生成方式,当需要调试时选Debug,当正式生成时选Release,虽然是废话,但还是要说。

五。调试
    调试程序是每个写程序必须要掌握的,在CB中我们可以很方便的进行程序调试,先可以从下图中了解一下Debug菜单中的基本命令和快捷键,F5- 断点切换 F8-开始调试 F7单步执行,Shift-F7跳进函数体,在程序中将光标放到想要断点的程序行,按F5后,就可以继续按F8开始调试,这个时候,可以把如图中所示的反汇编窗口和变量监视窗口打开,拖放到你想放的位置即可,如果要添加某个你需要监视的变量,可以使用Debug/Edit watches...这里进行编辑。图见一楼。

六。ResEd使用,创建资源文件。
    本节仅为Windows应用程序所用,学习基础c/c++的朋友可以跳过这一节。
    首先,为了使用方便,我们把add/ResEd.exe这个应用程序添加到Codeblocks环境中来。选择菜单tools/configure tools。然后点添加add,在弹出的对话框中,name中输入例如Resource editor,Executable中选择add/ResEd.exe,working directory中选择add/目录做为工作目录。然后选择launching options下面最后一项,意思是运行是不行是控制台重定向捕获。点确定后,tools菜单就会多出一项,选择就可以执行ResEd这个程序了。
    使用ResEd创建和编辑资源文件,新建时选择File/New Project新建工程,然后点选菜单Project/add Dialog等添加对话框,菜单,位图,字符串等资源进行设计,在保存前,为了使用C风格的资源,需要在菜单Option/Options第一个选项卡Exports中,Name Export Format 选 C defines,Default Export Filename那里输入resource.h或是其它.h文件名,所有的IDS才会导出到正确的头文件中,要不然导出的是汇编风格的。

七。多工程与配置。
    编程过程中,我们可能会创建多个工程共同协作的项目,例如,包括静态库,动态库,主程序,在CB中一个WorkSpace工作空间可以包括多个project工程,如图所示,CB windows编译版本也是采用cbp工程项目进行编译的,如果在工程中引用了第三方库文件,或者使用了例如Win32 Socket网络库,WinMM 多媒体库函数,需要将对应的库文件添加进工程才能正确的编译,如下图所示。

八、minGW命令行编译

8.1 MinGW 是什么?

        MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同时整合了GNU ( http://www. )的工具集,特别是GNU 程序开发工具,如经典gcc, g++, make等。MinGW是完全免费的自由软件,它在 Windows平台上模拟了Linux下GCC的开发环境,为C++的跨平台开发提供了良好基础支持,为了在Windows下工作的程序员熟悉Linux下的C++工程组织提供了条件。CodeBlocks内置此编译器在Codeblocks/MinGW目录下面,为TDM-MinGW,可以单独下载,另外还有MinGW-64,可以生成64位windows代码,可以去网上搜索下载。

8.2 为什么使用MinGW?

        因为我和很多IT人士一样,不愿意吊死在$M这棵树上。且不说开源这个理念的伟大,仅仅就Windows的安全性也已经让人们很不安心了。如果再深入一点从编写程序来看,在C++标准尚不成熟时期产生的MFC今天看来基本上就是盖子大叔凭着个人(或许是$M公司^^)理解所使用的C++方言。在我们期盼C++0x时代到来之前,没有任何实际行动能比严格遵循C++的ISO标准更能表达我们对于C++这个伟大的哲学体系的尊重。 从这个角度来说,遵循ISO标准的实现就是好的实现。所以,MinGW不会比VC差,况且,他既是开源软件家族中的一员,也是*nix平台下事实标准GCC的翻版。如果有一天我们开始使用Linux平台了,会因为今天透过MinGW所了解的GCC知识而受益。

8.3 答疑与示例
    Q:为什么要学习和掌握命令行编译?
    A:了解并掌握一个程序的编译,链结过程是每个合格程序员的基本素质。也可以为你以后进入linux编程打下一定的基础。

    所以我们依然以经典的hello world程序来进行示例,代码很短,所以不写注释了。
1.Console命令行版本:
文件名:main.c
代码:
程序代码:
#include <stdio.h>

int main()
{
    printf("hello world\n");
    return 0;
}

在命令行下面输入:
    gcc -Wall -c -g -o main.o main.c 进行文件编译。
参数解释:
    -Wall 打开所有的编译警告
    -c 只时行编译,不进行链结。
    -g 产生调试信息。
    -o main.o 生成编译输出文件叫main.o
最后进行文件链结:
    ld -Lc:\mingw\lib -o main.exe main.o c:\mingw\lib\crt2.o -lmingw32 -lkernel32 -lmsvcrt
参数解释:
    -Lc:\mingw\lib 设置链结时库文件路径,不设置的话,-lmingw32这些参数会找不到的。
    -o main.exe 设置输出最终的可执行文件main.exe。
    c:\mingw\lib\crt2.o 这个是Windows系统的控制台程序初始化模块。
    -lmingw32 -lkernel32 -lmsvcrt 这三个是指示链结时链上libmingw32.a libkernel32.a libmsvcrt.a相关库。其中后两个对应的是kernel32.dll和msvcrt.dll,基本的程序代码printf函数实际上调用的是puts函数,在msvcrt.dll动态库中。
当正式编译的时候,可以使用以下命令行以生成最小的EXE:
    gcc -s -O2 main.c -mconsole
参数解释:
    -s 编译生成汇编代码
    -O2 进行目标代码优化,O1到O3范围
    -mconsole 指定生成控制台程序。
虽然这里正式编译的示例没有上面步子那么多,但你依然需要如示例所示,明白一个程序倒底和哪些库/模块进行了链结。然后我们使用depends.exe查看程序与运行库依赖,如下图所示:

2.Windows版本:
文件名:main.c
代码:
程序代码:
#include <windows.h>

typedef HINSTANCE _h;
int WINAPI WinMain(_h hinst, _h hprev, LPSTR cmd, int nShow)
{
    return MessageBox(NULL, "hello world!", "OK", MB_OK);
}
命令行输入:
    gcc -c main.c
    ld -L"C:\Program Files\CodeBlocks\MinGW\lib" main.o "C:\Program Files\CodeBlocks\MinGW\lib\crt2.o" -lmingw32 -lkernel32 -luser32 -lmsvcrt
    这里示例的是如果是带空格的路径。

当正式编译的时候,可以使用以下命令行以生成最小的EXE:注意-mwindows表示的是生成windows应用程序
    gcc -s -O2 main.c -mwindows
用depends.exe查看程序与运行库依赖。用spy++查看窗口消息和信息。

九、走出IDE的世界,我们一样有其它编程的选择。
    通过上面的命令行编译,链结练习,相信你也明白了在IDE中点生成按钮时,背后做了哪些事情,OK,没有IDE的时候,我们难道就不能写程序了么?你是否还在为选择哪个IDE(VC6?dev cpp? trubo C? VS2008? VS2010? CB?)而为难?其实不用,Windows下面我们依然有其它选择,不用IDE,随便找个文本编辑器(世界上目前至少有1000多个文本编辑器可以选择,Notepad++, NotePad2, Programing NotePad。。。),甚至是记事本,都可以照样写程序,编译和链结,希望本文能带给和偶一样的初学者一些帮助。
   
结束语:
   感谢您走完本章所有课程,如果还有其它问题或是更好的建议或是教程有问题,请在后面留言。

[ 本帖最后由 hellovfp 于 2011-7-23 16:42 编辑 ]
搜索更多相关主题的帖子: 巨无霸 编译器 编程论坛 Windows 
2011-07-22 14:43
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
由于只能帖十张图,第五节至第七节图如下:
图5.1
图片附件: 游客没有浏览图片的权限,请 登录注册

图5.2
图片附件: 游客没有浏览图片的权限,请 登录注册

图6.1
图片附件: 游客没有浏览图片的权限,请 登录注册

图6.2
图片附件: 游客没有浏览图片的权限,请 登录注册

图7.1
图片附件: 游客没有浏览图片的权限,请 登录注册

图7.2
图片附件: 游客没有浏览图片的权限,请 登录注册

图8.1
图片附件: 游客没有浏览图片的权限,请 登录注册

图8.2
图片附件: 游客没有浏览图片的权限,请 登录注册

图8.3
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 hellovfp 于 2011-7-23 16:23 编辑 ]

我们都在路上。。。。。
2011-07-22 14:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
Code::Blocks 太大了些,什么都想往里面包含
我更喜欢小巧的 CodeLite

wxWidgets 很不错,干净简炼,但开发人员太少了点
看起来还是 Qt 更胜一筹
收到的鲜花
  • hellovfp2011-07-23 14:47 送鲜花  10朵   附言:青菜各有所爱吧,其实就大小嘛,偶做的绿色 ...
2011-07-23 08:27
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:10 
ooo 小鱼儿占一楼, 有时间一定试试,我们也了解编译 链接到底是怎么回事哦哦哦。。。。
                                   小鱼儿向hello问好了 呵呵

用心做一件事情就这么简单
2011-07-23 15:42
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
回复 4楼 小鱼儿c
呵呵,这帖里可能有一些你想要知道的一些知识,以前没有给你讲的。也向你问好喽,假期快乐不?

我们都在路上。。。。。
2011-07-23 16:28
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
回复 4楼 小鱼儿c
另外图中所示的相关的程序都在绿色版中,21.3MB,感兴趣可以去下载,无毒的。

我们都在路上。。。。。
2011-07-23 16:31
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
回复 5楼 hellovfp
呵呵,还好。每天在学习啊。忙啊。。。时间不够用啊。
好多东西要学习啊。。
没有你效率快啊 啊  

用心做一件事情就这么简单
2011-07-31 13:44
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
  开始我也在用
后来还是改用 vc了
codeblocks 还不错
2011-07-31 17:33
hutuxu
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-8-3
收藏
得分:0 
来学习咯,不懂的好多呀
2011-08-03 16:52
逍遥迅
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-3-5
收藏
得分:0 
windows7 64位,用不了vc6++,所以开始用code block, 楼主贴很有用,非常感谢
2012-03-05 21:27
快速回复:CodeBlocks简易教程--共同学习进步(完成)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040631 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved