今天需要写一个 makefile,项目里面有 pb 生成的 cc 和 cpp 文件,分别要生成各自的 obj,以前没有遇到过这种 cc 和 cpp 混合的情况,上网找了一下,找到这个模版,http://lcinx.blog.163.com/blog…:
#
# c.cpp混合编译的makefile模板
#
#
BIN = test.exe
CC = gcc
CPP = g++
#这里只加入库头文件路…… 阅读全文
Monthly Archives: August 2013
Google perftools cpu profiler 对多进程的支持问题
折腾了好久,到目前还是没有让 gperftools cpu profiler 能在多进程环境下跑起来,问题如下:
main_cmd_argv.cpp
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <gperftools…… 阅读全文
strncpy 的用法
在官方的文档中,http://www.cplusplus.com/refer…,例程的 strncpy 的用法是:
/* strncpy example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[]= "To be or not to be";
char str2[40];
char str3[40];
/* copy to sized buffer (overflo…… 阅读全文
GCC “-fomit-frame-pointer”编译选项的含义
在 makefile 中看到这个编译选项,不太理解于是查了一下,相关的东西还不多,抄一下放在这里
首先这个文章,http://blog.csdn.net/byzs/arti…,讲的不错,挺清晰的:
优化你的软件时,发觉”-fomit-frame-pointer”这个选项还是蛮有用的。
GCC手册上面这么说:
Don’t keep the frame pointer in a…… 阅读全文
修改函数的返回地址
来看这个代码
#include <stdio.h>
void fun2() {
printf("haha\n");
}
void fun1(int a) {
int* ret_addr = (&a)-1;
*ret_addr = (int)fun2;
}
int main() {
int a = 3;
fun1(a);
return 0;
}
他跑起来之后的输出是这样的:
zrj@vm:~/tmp$ ./a.out…… 阅读全文
使用 gperftools 分析 cpp 程序性能
首先从这里,https://code.google.com/p/gper…,下载 gperftools-2.1.tar.gz
接下来的操作教程主要参看这篇文章,http://www.searchtb.com/2012/1…,Google CPU Profiler使用指南及小工具,已经写的很好了,其中需要注意的问题有几个:
原文的 Makefile 没有排版,需要自己去 tab 缩进,不然在 make 的时候…… 阅读全文