这是我的页面头部

随笔分类 -  编译,跨平台

摘要:实验平台: linux + gcc + gdb 调试正在运行的进程。多次 fork(),exec()的程序,从头开始跟踪非常麻烦。可以使程序停在我们感兴趣的地方,然后用 gdb 去 attach。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->printf("___Iamwaitingforbeingattachedbygdb.mypid:_%d_________%s_%d__\n",getpid(),__FILE__, 阅读全文
posted @ 2009-04-09 18:14 范晨鹏 阅读(348) 评论(0) 推荐(0)
摘要:1、目标文件 .o 如果后面接着空格回车,则会报错。 2、CC = gcc 如果 CC 后面跟很多空格,则认为CC 没有定义。会使用系统中的CC而不是gcc. 3、使用通配符 %.o : %.cpp %.h 如果跟了 .h ,则会跳过 CC 的各种选项,如 -I , -L 等。 阅读全文
posted @ 2009-03-27 13:10 范晨鹏 阅读(211) 评论(0) 推荐(0)
摘要:使用查看内存命令,可以查看一个很长的字串。 gdb>x /200s 0x832e57c x 表示查看内存命令 / 表示后面是命令行参数 200 表示查看后面200行 s 表示打印的格式是 string 0x832e57c 是要打印的内存地址。 阅读全文
posted @ 2009-02-28 15:23 范晨鹏 阅读(251) 评论(0) 推荐(0)
摘要:静态连接库(扩展名为 .a)是.o文件的简单集合。在 linux/unix下,使用 ar 命令生成静态连接库。 动态连接库(扩展名为.so) 是将.o文件集合,并增加了导出表。导出表是一个函数名、函数索引、函数地址的数组。因此,应用程序可以装载(使用 ldopen函数)后,根据函数名,导出函数的索引位置来调用函数。动态连接库的优点在于:程序可以独立于连接库,即不需要包含头文件。两种连接库都可以减少模块间的依赖。两种连接库的文件名都必须有 lib前缀。可以使用 nm 命令查看连接库有哪些导出选项。可以使用 ldd 命令查看应用程序需要哪些连接库。可以一次性地指定编译当前目录下的所有 .cpp 文 阅读全文
posted @ 2009-01-16 18:19 范晨鹏 阅读(1833) 评论(0) 推荐(0)
摘要:将空函数优化掉是一项很有意义的工作。比如,在程序中,常常要定义一个打印函数。如果在 release时,把这个函数使用条件编译定义为空函数。且此空函数被优化掉,那就可以极大地提高程序的性能。测试表明: 在gcc中,使用 -O可以优化掉内联的空函数。默认情况下,空函数不会被优化掉。即使使用 -O,也不会优化掉非内联的空函数。内联的空函数会被优化掉是很容易理解的。函数被内联后,没有了参数入栈出栈操作,自然也就无代码可生成了。但没有优化选项是,内联函数不会被优化,我却想不通。既然 声明为 inlinne,为什么函数没有被优化掉。那还要 inline何用?下面分别是c源文件, 未优化的汇编代码,优化后的 阅读全文
posted @ 2008-11-17 16:23 范晨鹏 阅读(1705) 评论(0) 推荐(0)
摘要:ThevalueofthemakevariableVPATHspecifiesalistofdirectoriesthatmakeshouldsearch.Mostoften,thedirectoriesareexpectedtocontainprerequisitefilesthatarenotinthecurrentdirectory;however,makeusesVPATHasasearchlistforbothprerequisitesandtargetsofrules.--《GNU make》, Version 3.81 4.4.1 《VPATH: Search Path for 阅读全文
posted @ 2008-04-24 10:54 范晨鹏 阅读(2230) 评论(0) 推荐(0)