第2章 准备——2.1. 准备的准备

[回到目录]

白话C++

第2章.准备

"决定你能否成为程序员,不在于你的计算机基础,在于你是否有足够的耐心。"

 

2.1. 准备之准备

需要安装的程序分为“软件(可独立运行)”及“扩展功能库”两部分。软件都提供独立的安装程序,通常双击就可以开始“下一步”风格的安装。主角:Code::Blocks”略为复杂。

“扩展功能库”我们要求将它们安装到一个统一的目录之下,并且,通常在安装之后,还需要立即在Code::Blocks内配置路径变量。

2.1.1. 安装清单

  • 软件
  • Code::Blocks (IDE/C++集成编辑环境,含MinGW)
  • msys (Windows下的linux模拟环境)
  • MySQL (Database/数据库)
  • MySQL GUI Tools (Database Front/数据库前端工具)
  • gSOAP (Web Service C++ 快速开发工具)

 

  • C/C++的扩展功能库
  • wxWidgets (GUI library/图形用户界面库)
  • mysql (访问MySQL的C代码库)
  • mysql++ (访问MySQL的C++代码库,基于mysql
  • boost (C++ “准”标准库)
  • iconv/iconvpp (C形式的编码转换函数库,及本书作者用C++语言对iconv的简单封装)
  • xerces-c (XML解析)
  • xsd (XML 与 C++数据结构的绑定工具)
  • deelx (轻量级的正则表达式解析类库,国产)
  • SDL (Simple DirectMedia Layer/多媒体直接访问层,用于游戏编程)

2.1.2. 开源协议

本章所讲解的软件及库,均为自由软件(包括代码库),但它们各自所采用的开源许可协议并不完全一样。您可以放心的将它们用于学习目的。如果您需要使用这些软件用于商业目的,请认真阅读各软件(及库)自带的许可协议,理解并严格遵守。

本课程中所撰写的代码或软件,读者可以免费分发,但应保留代码中相关版权声明。

2.1.3. 什么是“库”

怎么理解“C++语言”和“C++库”之间的关系呢?打个比方就像我们学会了英语,但不一定就能成为一名英语作家,要想用英语写出优美的文章,最好手头有套《莎士比亚全集》。我们要想用C++语言写软件,不仅要学会语言本身,还得学会相关的“库”。

C++自带了一套代码库,通常称之为“C++标准库”,由于C++与C的“血缘关系”,所以“C++标准库”也包含了“C标准库”——但光有标准库还远远不够,于是就有了“C++扩展库”。

“ 库” 通常包含了许多用于实现特定功能的代码,从存在形式上区分,库可以就是一堆源文件,也可以是编译之后的二进制文件,或者是二者兼而有之。这几种类型的库,在本章我们都将碰上。对于纯源代码形式的库,安装工作实在太简单了:创建一个文件,把库文件保存进入去完成了;对于需要编译的库,本书负责提供详细,手把手的教程;您则负责提供:细心、耐心,还有决心。

和 “软件”或“程序”的概念不同,“库”文件虽然也是由“代码”写成,但“软件”或“程序”通常可以独立运行,而“库”文件无法独自运行,虽然它能提供许多强大的功能,但它需要程序来调用。就像一个军火库,里面有许多兵器:AK-47步枪,有M9手枪、有坦克、大炮……好的兵器需要好的战士来使用。一个自称对C++语言非常熟悉的程序员,手里却没有几套玩得好的“库”就想写程序,那就像一身肌肉的007,手里拧把菜刀,嗷嗷叫着扑向战场一样悲壮。

纯源代码形式的库,在使用上也非常简单:直接将源文件加入我们所写的程序项目中,参加编译即可。需要编译的库,则又复杂一些,同一份源代码,我们可以将它编译成不同目标的二进制库,其中最典型的区分是:“调试库”、“发行库”;及“静态库”、“动态库”。

  • 调试库 Vs. 发行库

“ 调试版”和“发行版”二者的区别在于:前者含有调试信息,而后者没有。有调试信息的库,有利于我们纠出程序中的错误,不过因为含有调试信息,所以调试版的库通常 “长得比较胖”(编译后的二进文件体积比较大)。如果觉得错误纠得差不多了,我们就可以改用相对“苗条”的发行版。

  • 静态库 Vs. 动态库

二者分别是对“静态链接库”和“动态链接”的一种简称。

“静态链接”是指,直接将库文件和程序文件合成一个大文件,在合并过程中,完成对库文件各个功能的定位。这个事情发生程序编译的过程。

“动态链接”与此相反,库文件和程序文件各自独立存在,程序在运行时,才去库文件中查找相关的功能。

完全使用“静态链接”,我们可能会得到一个“胖胖”的程序,直接发给用户使用就可以了。使用“动态链接”,我们可能需要分发给你的用户多个文件(程序和各个库文件)。不小心弄丢了哪个文件,用户们就要抱怨你的软件“跑”不起来了。

稍微复杂的软件,通常都采用“动态链接”技术。当然,为了解决分发多个文件的繁琐,通常我们可以另外做一个“安装”程序。相信您也经常安装软件,对这一点会很熟悉,本书附录也专门提供了如何制作安装程序的辅助课程。

2.1.4. 准备安装目录

为了方便,将上述C/C++扩展库安装到同一个文件夹下,是个好主意。本书假设该文件夹为“E:/cpp_ex_libs”。后述章节,凡提及该文件夹(有进也称为目录或路径),请读者自行替换为您自己实际创建的文件夹名称。

2.1.5. 本章学习方法

您可以花上一段时间,完成本章全部课程的学习(重要指标:完成本章提及的全部软件与扩展库的安装);您可以先仅完成2.2节有关Code::Blocks软件的安装,然后跳到第3章开始学习,当所学内容需要相关软件或扩展库时,再回本章补上相关内容——特别是本章的最后小节“Code::Blocks配置 ——全局路径变量”。

本章涉及软件及扩展库,均为开源及自由软件,仅用学习目的,您可以放心地使用。如果您需要修改、重新发布、或者有意用于商业开发,请仔细阅读各软件及扩展库自带的版权说明文档,并严格遵守相关协议。

另外,本章涉及软件及扩展库,在您阅读到本书时,可能会有各自新的版本出现,因此当您准备下载时,请以各官方网站上最新版本的链接为准。

 

 

白话C++

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南郁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值