首先,我们是要在Linux下进行项目开发,让我们把windows“拆了”,装个Linux也是不可能的,会带来很多的不便,所以我们首先需要在虚拟机上安装Linux操作系统,我本次用的是CentOS,它也是Redhat Linux的产品中一种。对于虚拟机上Linux的安装网上的资料很多,相信我们都能自己独立完成安装。
接着,我们需要下载Linux下的开发工具,以下是工具的说明及下载地址:
1、Cmake(构建工具)
CMake 是个跨平台的自动化构建系统,它通过用组态文档来控制构建过程(build process)的方式和 Unix 的Make 相似,只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接构建出最终的软件,而是产生标准的构建文档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再按照一般的建构方式进行使用。
下载地址:http://www.cmake.org/cmake/resources/software.html
学习文档:http://sewm.pku.edu.cn/src/paradise/reference/CMake%20Practice.pdf

2、log4pp(Linux下日志记录工具)
学习及工具下载地址:http://log4cpp.sourceforge.net/

3、CxxTest(Linux下C/C++工程单元测试工具)
学习及工具下载地址:http://cxxtest.tigris.org/

4、Gdb(Linux下C/C++调试工具)
学习及下载地址:http://www.gnu.org/software/gdb/

为了书写程序和与Linux交互方便,我们还需要以下辅助工具:
1、Eclipse+Uniwin(远程代码代码同步windows到Linux)
2、SecureCRT(相当于Linux下终端),可以在windows下控制Linux
3、Linux_scp (用它来进行linux与windows之间的文件传输)

我这全是 Linux 环境开发,我就大致介绍以下我们这里的现状吧:

编辑器:
vim 用户:45%
eclipse 用户:30%
kscope/kate/kdevelop 用户:15%
emacs 用户:5%
win虚拟机+source insight用户:5%

说明一下:
三个k字头的其实内核都是 kate 的内核,emacs的用户一般是超牛人。vim 用户是主流用户。
source insight 的致命缺点在于不支持 utf-8,而我们会规定所有项目的源代码使用 utf-8 编码。显然,大多数人认同使用 utf-8 是个好习惯,因而 si 的用户必然被限制无法在代码中使用和阅读中文。
其实大多数编辑器不存在明显的功能残缺(除了不支持utf-8的source insight),但是很多功能你是需要有团体互相交流才懂的,明确的说 SI 的几乎所有功能都可以在 vim/eclipse 中实现,对于 vim/eclipse,绝大多数需求在我们这里可以通过互相交流而弄懂,所以自然滚雪球一样越来越多。

编译环境:
统一配发的工具链,编译时使用 chroot 环境。关于这一点没什么可说的,编译环境必然需要所有人全部统一,无论你使用什么发行版。

版本控制:
有很多项目,通常使用 svn/hg/git。原先使用 svn 的为主,后来都转到了 hg,目前大多数项目使用 hg。至于 git 因为使用配置太过复杂,目前只有一个项目组使用。对于存在 svn 历史积淀的项目组来说,hg 确实是一个远超越 git 的神器。

调试:
从 Linus 大神开始,printf 就一直是调试利器,上面虽然没有一个人提到 printf 是调试利器,但没人敢不承认它。——关于这一点在现实中会存在许多变种,例如可以定制自己的宏实现分标志,分级别,重定向到 syslog,或者文件,远程 udp socket,等等。相关的工具打造好了之后,你获取信息会很精准而方便。我个人经常使用 udp socket 来接受日志输出。

附注:
Subversion
Subversion 是群英汇支持的最重要的产品,我们服务的大多数客户,都或多或少的选择了我们的版本控制服务。群英汇为客户提供Subversion版本控制服务,从培训、应用部署、系统整合到售后服务、技术支持。

我们公司的部分项目使用了Subversion版本控制系统,如:
pySvnManager:托管在SourceForge上
FreeMind-MMX: 托管在SourceForge上
WordPress的CoSign-SSO插件:位于官方的Subversion库中

我们公司内部的开发在2007年以前,也主要使用Subversion,但是之后,我们的代码库逐渐的向分布式版本控制系统迁移:
先是Hg:Hg是水银的化学元素符号,全称为Mercurial。
后来是Git:Git 是 LinusTorvalds 继Linux后的又一个伟大发明,为全人类的另一个伟大贡献

Hg/Mercurial
Hg走入我们的视线,是因为我们研究的项目都一个一个脱离Subversion阵营,转向Hg,使用Hg作为各自项目的版本控制工具。其中一个我们主要研究的项目是:MoinMoin维基。

使用Hg后,困扰我的问题迎刃而解,就是:
我们的软件开发模式是基于成熟的开源软件进行定制。项目的原始代码库称为上游,我们自己的代码库称为下游;
使用Subersion,我们采用Subversion的Vendor分支(或称卖主分支)来管理我们的代码,一但上游软件软件出现新的版本,我们代码的迁移就成了最让人头痛的事情,可能好几天都不能搞定;

Hg可以很好的解决这个问题,原因在于:
Hg是分布式版本控制工具,整个代码库都在本地,浏览变更历史速度超快,实际上是本地访问,不再受制于网络。这样我们就可以更快的建立和上游版本库的同步,尽早尽快的解决代码合并问题,而不是要等到新版本发布;
Hg的最佳拍当MQ!简直就是为我们的开发模式所设计的。Subversoion的卖主分支和MQ相比就好像马车和火箭的对比。
Hg简单,并且使用习惯和Subversion非常相似,这也是为什么我们公司的版本控制系统在转向 Git 后,仍有部分项目在使用 Hg的原因

群英汇的Hg开源代码库:
http://bitbucket.org/ossxp_com/

Git
有了Hg,为什么还要用git?
和Subversion代码库同步的需要。
虽然svn可以镜像远程代码库,但镜像库不能提交;
Hg不支持分支,因此无法完全克隆一个Subversion代码库
Git有着完备的分支支持,可以将远程svn库镜像为一个本地的git库,而且可以提交甚至远程提交

Git速度更快。如果你用过git和hg,你就会对我说的有所感觉:
Hg提交/克隆/push/pull,我经常对自己无所事事 <[if gte vml 1]> 而感到恼怒,感觉就像傻子一样,完成了多少?1%还是99%?
Git速度超快不说,整个过程有着详尽的提示,真是体贴备至。 <[if gte vml 1]>

Git+Topgit很好的支持上下游的协同开发
Hg的MQ虽然很好,但是Git有Topgit,而且Git的rebase功能更成熟
MQ可能更适合单人开发,但是没有办法对补丁之间建立依赖关系
Topgit采用分支来管理补丁,而且可以在分支之间设置依赖,可以是代码更整洁

Linux系统——C/C++开发工具及环境搭建的更多相关文章

  1. Linux系统下C++开发工具-远程终端软件使用

    通过前面安装Linux系统介绍,紧接着进入搭建Linux开发环境的第二步,选择C++开发工具,以及必要的客户端软件.从而完整的搭建一个Linux下C++开发的环境,便于初学者在该环境下能够很好的学习. ...

  2. UI5-学习篇-1-Eclipse开发工具及环境搭建

    最近研究SAP-UI5好几个月了,将相关学习经历及问题点做个记录. 1.先了解学习资料相关站点 SAP官网:https://www.sap.com/china/index.html SAP开发工具:h ...

  3. linux虚机配置开发/Server环境全集

    linux虚机配置开发/Server环境全集 9. centos 升级githttp://www.cnblogs.com/grimm/p/5368777.htmla. 下载git2.2.1并将git添 ...

  4. Linux (Ubuntu12.04) 下开发工具安装和使用

    Linux (Ubuntu12.04) 下开发工具安装和使用 这里讲述的是关于在ubuntu12.04下面安装和使用各种IDE 开发环境和初步使用的知识.说一下背景:很多的开发基本都是在linux操作 ...

  5. 详解LUA开发工具及其环境配置

    LUA开发工具及其环境配置是本文要介绍的内容,主要是来了解并学习lua开发工具的使用和环境的配置,第一次接触LUA的话,就跟本人一起学习吧.看我能不能忽悠到你. LUA是语言,那么一定有编写的工具.第 ...

  6. 在 Linux 系统下使用 PhotoRec 工具来恢复已删除或丢失的文件

    PhotoRec – Recover Deleted or Lost Files in Linux 在 Linux 系统下使用 PhotoRec 工具来恢复已删除或丢失的文件 当你在系统中有意或无意地 ...

  7. [转]linux 系统监控、诊断工具之 IO wait

    1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...

  8. 全新重装win8.1系统后 配置开发及办公环境步骤

    全新重装win8.1系统后 配置开发及办公环境步骤 这两天,系统因配置开发环境出错,重装了一下,为日后方便,故此记录系统配置流程,防日后重装系统计划不周. 安装前,对照步骤,准备好下列安装文件. 0. ...

  9. 开发工具IDEA环境安装配置

    开发工具IDEA环境安装配置 该工具和eclipse类似,但是使用感受确实比eclipse好,越来越多人开始使用IDEA了. 下载地址如下 : https://www.jetbrains.com/id ...

随机推荐

  1. 手机丢了怎么办?MZ给你来支招

    1致电运营商挂失手机 2致电银行冻结手机网银 3手机绑定支付宝的拨95188挂失 4微信用户登录110.qq.com冻结账号 5修改微博.微信.QQ等密码 6到手机运营商处补手机卡. 一定要记住啊!手 ...

  2. linux 安装mysql5.6 yum

    安装mysql: 查看mysql: rpm -qa | grep -i mysql 安装必要的环境 yum -y install gcc gcc-c++ ncurses-devel perl 查看环境 ...

  3. stark组件(11):组合搜索

    效果图: 新增函数和类 Option 获取字段的对象或元组 SearchGroupRow 封装数据,展示到前端 get_search_group 获取组合搜索的字段 get_search_group_ ...

  4. 手动完全卸载Office

    1 当然出现安装错误,或是无法安装先考虑官方卸载工具卸载,运行后要是解决了问题是最好的.毕竟手动删除比较麻烦. 开始我们先停止 Office Source Engine 服务.以windows7为例子 ...

  5. PAT (Basic Level) Practice 1040 有几个PAT

    个人练习 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位( ...

  6. 013---Django的分页器

    知识预览 分页 Django的分页器(paginator) view from django.shortcuts import render, HttpResponsefrom app01.model ...

  7. POJ:3045-Cow Acrobats

    Cow Acrobats Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6253 Accepted: 2345 Descript ...

  8. 基于itchat定制聊天机器人

    #coding=utf8import requestsimport itchat #key自己到图灵注册一个 KEY = '************************************** ...

  9. Android面试收集录14 Android进程间通信方式

    一.使用 Intent Activity,Service,Receiver 都支持在 Intent 中传递 Bundle 数据,而 Bundle 实现了 Parcelable 接口,可以在不同的进程间 ...

  10. js双轴柱状图

    <!doctype html><html lang="en"><head> <script type="text/javascr ...