学习GCC

学习GCC

学习GCC,GDB。

先说两句题外话。最近M$状告Google的android侵犯了专利,可以参考这里,其中我蛋疼地搜索了两个,看这里,还有这里。姑且不看这些专利是否有用,微软能在关键时刻拿得出手还是得佩服,深谙专利之道啊,这些年的老大不是白混的。此外,微软自己的网站上也有很多专利,可以看这里,其中这里有些公开的文档,包括office系列文件格式的描述,看看他的设计方法还是有些收获的。其实在通信行业专利的竞争也很激烈,比如最近的北电专利拍卖案就很说明问题,虽然北电倒了,但是专利还是很抢手的。作为一个通信行业软件工作者,还是有必要了解专利知识,必要的时候自己也能够申请,可以看作是自身技术能力的体现。

在LINUX下,可以使用man gcc来了解gcc的功能和选项,其中一些常用选项需要记住,比如-g -o2 -o0等,另外还应该熟悉makefile,因为简单的程序可以直接使用gcc来用命令行编译,大型一点的程序肯定得使用makefile了。今天在公司看了vxworks的编译方式,总体过程就是编译的时候添加调试信息并且不优化,最终发布的软件版本去掉了调试信息而且进行了压缩。在排查问题的时候,host使用带有符号信息的vxworks文件来进行交叉调试,具体适使用host做target server,目标机做target agent,且使用wdb进程进行调试。对带有符号的文件进行objdump或nm的话,可以看到函数名字等信息,对没有符号信息的文件进行dump的话,只会看到一堆堆的反汇编代码。

如果在加入调试信息的时候,还使用-o1或-o2进行了优化的话,在调试的时候可能会出现程序异常跳转行为,这是因为编译器已经对代码进行了优化,所以有些代码可能根本就不被执行。

除了gcc,gdb这个强大的工具也应该熟悉,可以说是编程人员的利器。可以参阅这篇参考文档

上班的时候,同事问了一个正则表达式的问题,才发现自己这方面很白痴,得补充一下这方面的知识了。

makefile中常用符号的意义:http://www.gnu.org/software/make/manual/make.html#Automatic-Variables

正则表达式使用最为广泛的是perl, vim中也使用了一些,可以尝试学习。

Comments are closed.