Linux系统——C/C++开发工具及环境搭建
首先,我们是要在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++开发工具及环境搭建的更多相关文章
- Linux系统下C++开发工具-远程终端软件使用
通过前面安装Linux系统介绍,紧接着进入搭建Linux开发环境的第二步,选择C++开发工具,以及必要的客户端软件.从而完整的搭建一个Linux下C++开发的环境,便于初学者在该环境下能够很好的学习. ...
- UI5-学习篇-1-Eclipse开发工具及环境搭建
最近研究SAP-UI5好几个月了,将相关学习经历及问题点做个记录. 1.先了解学习资料相关站点 SAP官网:https://www.sap.com/china/index.html SAP开发工具:h ...
- linux虚机配置开发/Server环境全集
linux虚机配置开发/Server环境全集 9. centos 升级githttp://www.cnblogs.com/grimm/p/5368777.htmla. 下载git2.2.1并将git添 ...
- Linux (Ubuntu12.04) 下开发工具安装和使用
Linux (Ubuntu12.04) 下开发工具安装和使用 这里讲述的是关于在ubuntu12.04下面安装和使用各种IDE 开发环境和初步使用的知识.说一下背景:很多的开发基本都是在linux操作 ...
- 详解LUA开发工具及其环境配置
LUA开发工具及其环境配置是本文要介绍的内容,主要是来了解并学习lua开发工具的使用和环境的配置,第一次接触LUA的话,就跟本人一起学习吧.看我能不能忽悠到你. LUA是语言,那么一定有编写的工具.第 ...
- 在 Linux 系统下使用 PhotoRec 工具来恢复已删除或丢失的文件
PhotoRec – Recover Deleted or Lost Files in Linux 在 Linux 系统下使用 PhotoRec 工具来恢复已删除或丢失的文件 当你在系统中有意或无意地 ...
- [转]linux 系统监控、诊断工具之 IO wait
1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...
- 全新重装win8.1系统后 配置开发及办公环境步骤
全新重装win8.1系统后 配置开发及办公环境步骤 这两天,系统因配置开发环境出错,重装了一下,为日后方便,故此记录系统配置流程,防日后重装系统计划不周. 安装前,对照步骤,准备好下列安装文件. 0. ...
- 开发工具IDEA环境安装配置
开发工具IDEA环境安装配置 该工具和eclipse类似,但是使用感受确实比eclipse好,越来越多人开始使用IDEA了. 下载地址如下 : https://www.jetbrains.com/id ...
随机推荐
- FAT32中文版分析+补充(2)
从Offset 36(0x24)开始FAT12/16的内容开始区别于FAT32,现在分两个表格列出来,下表为FAT12/16的内容: 名称 Offset(Byte) 大小(Byte) 描述 BS_dr ...
- 浅谈MySQL字符集
Preface MySQL use character set & collation to organize the different charater.It provid ...
- Docker学习之镜像操作
使用Docker镜像 以下都是Docker镜像的一系列重要名操作,包括获取.查看.搜索.删除.创建.存出或载入.上传等.可使用docker image help命令查看帮助. 1.获取镜像(pull) ...
- 【转载】C语言itoa()函数和atoi()函数详解(整数转字符C实现)
本文转自: C语言itoa()函数和atoi()函数详解(整数转字符C实现) 介绍 C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. int/float to ...
- js获取url参数方法
function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...
- MPP(大规模并行处理)
1. 什么是MPP? MPP (Massively Parallel Processing),即大规模并行处理,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和 ...
- Windows手工创建服务方法
需要将程序设置成Windows服务的情况,可以利用一下windows自带的sc命令来创建服务. 该命令的基本用法如下:打开cmd命令, 输入如下信息:1 创建服务:sc create SecServe ...
- [Bzoj4289]PA2012 Tax(Dijkstra+技巧建图)
Description 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边 ...
- 为 dll (类库) 解决方案添加测试项目
解决方案中新建项目, 添加引用, "解决方案" -> "项目", 选中即可, 而非直接添加 dll, 这会导致编译出错
- ElasticSearch 之 Client
在使用ElasticSearch的时候,我们需要与Cluster通信,Java版本的API提供了几种方式来构造Client,进而通过Client操作Cluster. 1)使用Node与clusto ...