一、gcc:GNU Compiler Collection
功能:将高级语言变为汇编,驱动各工具的执行。
包含了:gcc/g++/g77/cc...
二、binutils:GNU Binary utilities
功能:将汇编变为二进制,查看二进制文件信息,和一些二进制工具。
包含了:as,ld(汇编和链接),objdump,readelf,strip,ar,nm,ldd;gprof,gpcov.
三、glibc:GNU C Library
功能:提供库函数。
四、二进制工具简要说明
1、objdump
1)功能:反汇编各种格式的目标文件和可执行文件。
2)常用选项:-d 只反汇编代码段 -D 反汇编数据段和代码段 -S 混合出源代码和汇编代码,编译是需 加-g选项
2、readelf
1)功能:显示ELF格式信息。
2)常用选项:-e 显示头信息,包括elf file header,section header,program heade
-r 显示重定位信息 -s 显示符号表信息 -a显示所有信息
3、strip
1)功能:删除输入文件的符号表和指定section
2)常用选项:-o 输出文件名
4、ar
1)功能:管理归档文件(*.a),也叫静态库。
2)常用选项:d m q r t x人别为:删除 移动 添加 替换 显示 取出归档文件的内容
3)示例:ar x /lib/libc.a
取出libc.a中的所有目标文件(*.o)到当前目录
ar q libmy.a obj1.o obj2.o
将obj1.o和obj2.o加入到libmy.a
5、nm
1)功能:显示目标文件、可执行文件和归档文件(*.a)中的符号信息
2)示例:nm /lib/libc.a > symbol
6、ldd
1)功能:输出目标文件和共享库的依赖关系。
7、gprof
1)功能:编译要加上-pg选项,根据执行程序时产生的数据(gmon.out),输出profile信息,包括:每个函数执行时间,所占比例,调用关系等。
2)用法:gprof option 编译出的执行程序 gmon.out
-b不再输出统计图表中每个字段的详细描述。
-p 只输出函数的调用图(Call graph 的那部分信息)。
-q 只输出函数的时间消耗列表。
-E Name不再输出函数Name 及其子函数的调用图,此标志类似于 -e 标志,但它在总时间和百 分比时间的计算中排除了由函数Name 及其子函数所用的时间。
-e Name 不再输出函数Name 及其子函数的调用图(除非它们有未被限制的其它父函数)。可 以给定多个 -e 标志。一个 -e 标志只能指定一个函数。
-F Name 输出函数Name 及其子函数的调用图,它类似于 -f 标志,但它在总时间和百分 比时间计算中仅使用所打印的例程的时间。可以指定多个 -F 标志。一个 -F 标志只能指定一 个函数。-F 标志覆盖 -E 标志。
-f Name输出函数Name 及其子函数的调用图。可以指定多个 -f 标志。一个 -f 标志只能指定一个 函数。
-z 显示使用次数为零的例程(按照调用计数和累积时间计算
8、gcov
1)功能:另一个profiling工具,可以分析出一次执行中每行源代码的执行次数,branch跳转的情 况,可分析程序的关键代码和构造testsuite。
2)使用方法:编译时加-fprofile-arcs -ftest-coverage,最好不加优化选项,针对每个源文件产生的*.bb,*.bbg,*.da.显示:gcov *.c 生成*.gcov。
阅读(1122) | 评论(0) | 转发(0) |