IT笔记 · 2013年12月19日

linux C 编程,gcc、gdb以及Makefile的笔记

一些注意点

  • 今天碰到个超简单的问题,却白花了五个小时时间!!问题原因很简单,一个公用头文件更新了,却只重新编译了部分依赖此头文件的cpp,导致不同模块的同一obj布局不一样。罪魁祸首是没有写全依赖的Makefile,再一个就是,以前用VS编程不可能出现这种问题,只要你包含了头文件,VS自动就帮你建立依赖了。果然太过依靠自动化,基础知识不扎实就会出问题。以前没这种问题的经验,在查找内存越界上浪费了时间,linux各种调试工具都还用不熟悉,真是苦。这种问题的典型现象是:一个指向另一个类的对象指针,刚new出来对其成员变量操作似乎没问题,但一调用其成员函数,就发现指针越界什么的奇怪问题,这时候就要考虑是否是该类重新编译更新了而本模块却没更新。
  • Makefile也可以写成类似VC那样的自动头文件依赖。具体可看此文章:自动处理头文件的依赖关系

备忘