calltree 在ubuntu(12.04)上的编译 ___附 已编译+源码包
来源:互联网 发布:淘宝同城的怎么搜索 编辑:程序博客网 时间:2024/05/16 05:54
参考
http://blog.csdn.net/cqbamboo/article/details/6736627
http://blog.csdn.net/younggift/article/details/9238383
64bit ubuntu12.04 编译通过
无法上传附件, 附已编译好的文件+源码包 地址: http://download.csdn.net/detail/elitemouse/8217185
1 解压
tar -xvf calltree-2.3.tar.bz2
2 编译 直接执行make 报错如下 :
2.1
RULES/rules1.top:234: incs/Dcc.x86_64-linux: No such file or directory
RULES/rules.top:39: RULES/x86_64-linux-cc.rul: No such file or directory
RULES/rules.cnf:56: incs/x86_64-linux-cc/Inull: No such file or directory
RULES/rules.cnf:57: incs/x86_64-linux-cc/rules.cnf: No such file or directory
p incs/x86_64-linux-cc
make: p: Command not found
make: [incs/x86_64-linux-cc/Inull] Error 127 (ignored)
/bin/sh: 1: cannot create incs/x86_64-linux-cc/Inull: Directory nonexistent
make: *** [incs/x86_64-linux-cc/Inull] Error 2
解决 :cp RULES/i686-linux-cc.rul RULES/x86_64-linux-cc.rul
原因:问题是calltree的这个版本里头没有X86064位对应的Makefile规则文件,可以直接把i686-linux-cc.rul复制为x86_64-linux-cc.rul
2.2 继续make , 报错:
In file included from stdio/io.h:29:0,
from stdio/cvmod.c:21:
../include/schily.h:110:12: error: conflicting types for ‘fexecve’
/usr/include/unistd.h:558:12: note: previous declaration of ‘fexecve’ was here
../include/schily.h:186:12: error: conflicting types for ‘getline’
/usr/include/stdio.h:675:20: note: previous declaration of ‘getline’ was here
make[2]: *** [OBJ/x86_64-linux-cc/cvmod.o] Error 1
make[2]: Leaving directory `/work/leilong.su/software/calltree-2.3/libschily'
make[1]: *** [all] Error 2
还有缺少头文件之类的一堆错误
解决:
find . -name "*.[c|h]" -exec grep getline -nH {} \;
find . -name "*.[c|h]" -exec grep fexecve -nH {} \;
将找到的文件 getline fexecve都改个名字
原因:[http://www.3null.org/?p=439],他说,"在比较新的内核(glibc库)上编译,会出现编译不过的问题。具体现象大概像下面这个样子..." 这个样子,就是你上面看到的样子。"具体解决办法有两种,一种就是给glibc打patch,另一种就麻烦点,把冲突的命名手动都改了。"
关于解决方案,打patch,怎么打啊,手动改命名,怎么改啊。此处说来话长,我略过吧。总之,我们就知道,应该这样手动命名:把calltree源代码里所有声明、定义、调用这两个函数的地方,都把这两个函数改个名字。只要新的名字不再与posix的重名,那就没冲突了,编译就能通过了。
3 使用
以kernle为例
calltree -np -b -dot list=start_kernel ./init/*.c > ~/start_kernel.dot
cd ~
dot -T png start_kernel.dot -o ./testhaha.png
calltree时会打印出各种already defined , 仍然可以生成dot文件, 不管它就是了
这样就生成了start_kernel的调用图
- calltree 在ubuntu(12.04)上的编译 ___附 已编译+源码包
- 在ubuntu上编译deb包的过程
- 在ubuntu 上下载 编译android 源码
- 在ubuntu上,源码编译安装Mplayer
- 在Ubuntu 14.04上编译Android源码
- 在ubuntu 16.04上编译Android 源码
- 如何编译ubuntu源码包里面的源码?
- poco在qnx上编译(附网上找的在iphone上编译)
- netcdf源码在windows上的编译
- ROS在NanoPi2上的源码编译
- 在ubuntu上编译android的mupdf
- vlc在ubuntu上的编译
- android-4.4源码 在ubuntu上编译和 模拟运行
- 在Ubuntu 11.10 X64上编译Android源码
- Android 在ubuntu上下载和编译系统源码
- 菜鸟起飞:第一次在ubuntu上编译android源码
- 在ubuntu 14.04上编译android 5.0.2源码
- 在Ubuntu Server 14.04上编译Android 6.0源码
- iOS应用安全风险及加密解决措施
- [Swift]多态类型转换以及不确定类型
- android 检测Service是否正在运行
- Study JavaScript《parseInt使用》
- Java 实现抽象工厂模式
- calltree 在ubuntu(12.04)上的编译 ___附 已编译+源码包
- 关于linux进程间的close-on-exec机制
- 鸟哥释疑——关于变量的删除
- android Button 的按下和抬起事件监听
- Android中SQLite应用详解
- Chapter 2. Thread Safety
- 命令行刷图工具,VC++
- linux下USB转串口的设置
- 手把手教你破解无线路由器密码