习惯了window的编程环境,习惯了Microsoft VS的方便使用,习惯了IDE的一键搞定,转到Linux环境,颇有些不适用。虽然Linux也有强大的IDE开发环境,如我比较喜欢的Eclipse,但是既然转到了Linux,就要去学习一下Linux的精华,看到周围同事的全命令行编程,一个字,酷,但是不能只是干瞪眼的只是羡慕,还是一个字,学。
(一)学习编辑程序:Vim
如同电脑新手学习打字一般,我开始学习使用Vim。Vim不愧是编辑器里的战斗机,全键盘操作给程序编辑带来了很大的方便。但是Vim的学习曲线比较大(见主流文本编辑器学习曲线),初学者学习起来比较吃力。从插件的安装配置,vim命令的学习和使用,一步步慢慢熟悉起来,但是对于代码提示和补全貌似Vim就弱了些,这都是被IDE惯出来的毛病啊。
推荐酷壳网(http://coolshell.cn/)里面有不少介绍vim的文章
主流文本编辑器学习曲线:http://coolshell.cn/articles/3125.html
游戏:VIM大冒险 http://coolshell.cn/articles/7166.html
简明 Vim 练级攻略http://coolshell.cn/articles/5426.html
给程序员的VIM速查卡http://coolshell.cn/articles/5479.html
经典vim插件功能说明、安装方法和使用方法介绍http://blog.csdn.net/tge7618291/article/details/4216977
(二)gcc/g++
编辑完程序就得学习编译了,这就要学习GCC了。GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compiler Collection 也即是 GNU 编译器家族的意思了。另一方面,说到 GCC 对于操作系统平台及硬件平台支持,概括起来就是一句话:无所不在。
学习GCC主要就是学习gcc命令中的常见选项:
-oFILE 指定输出文件名,在编译为目标代码时,这一选项不是必须的.如果FILE没有指定,默认文件名时a.out
-c 只编译不链接
-DFOO=BAR 在命令行定义预处理宏FOO,其值为BAR
-IDIRNAME 将DIRNAME加入到包含文件的搜索目录列表中
-LDIRNAME 将DIRNAME加入到库文件的搜索目录列表中
-static 链接静态库,即执行静态链接默认情况下gcc只链接共享库
-shared 生成共享目标文件。通常用在建立共享库时
-IFOO 链接名为libFOO的函数库
-g 在可执行程序中包含标准调试信息
-ggdb 在可执行程序中包含只有GNU debugger(gdb)才能识别大量调试信息
-O 优化编译过的代码
-OLevel 指定代码优化的级别为Level,0<=Level<= 3,如果未指定Level,则默认级别为1
-ansi 支持ANSI/ISO C的标准语法,取消GNU的语法扩展中与该标准有冲突部分(但这一选项并不能保证生成ANSI兼容的代码)
-pedantic 允许发出ANSI/ISO C标准所列出的所有警告
-pedantic-errors 允许发出ANSI/ISO C标准所列出的所有错误
-traditional 支持Kernighan & Ritchie C 语法 (如用旧式语法定义函数).
-w 关闭所有警告,建议不要使用此项
-Wall 允许发出gcc能提供的所有有用的警告.也可以用-W{warning}来标记指定的警告
-werror 把所有警告转换为错误,以在警告发生时中止编译过程
-MM 输出一个make兼容的相关列表
-v 显示在编译过程的每一步中用到的命令
(三)Make/SCons
对于make,我依旧是菜鸟,继续学习中。谁有好的资料可以推荐下。
陈皓(PS:酷壳博主)写的《跟我一起写 Makefile》http://download.csdn.net/detail/xuh5156/4554872
Gnu make 中文手册 V3.8 http://download.csdn.net/detail/xuh5156/4554898
SCons自称是make的超级替代品,是用Python写的,其编译文件SConstruct也是采用Python编写,这对于比较熟悉python的人是很方便的。但是目前好像没有什么中文的资料,只能去看英文的手册了。
(四)gdb
简单的gdb用法
1. breakfunctiona
在functiona函数处设置端点
2. run
让程序从main入口执行到断点functiona
3. n
next,单步执行,相当于VC中的调试命令step over
4. s
step into,进入子函数,察看子函数的执行情况
5. bt
backtrace查看堆栈的情况
6. p variant
print出变量variant的值
7. l
list命令,查看当前的行的上下文,默认显示10行
8. pvariant=correct value
如果发现此时的variant的值不正确,我们可以给variant设置一个正确的值(correct value)
然后,用第10项中的命令继续执行
9. c
continue 继续执行,可以是经过按照更改后的值继续执行。相当于VC中的F5
10. quit orCtrl+C
退出gdb
逐渐的学习下来,一个Linux下的菜鸟也算练得差不多了,还颇有收获,剩下的就是熟练的应用了。继续一步步的学习,一步步的深入,期待渐入佳境吧。
再次感谢陈皓及他的酷壳网。