binutils工具集之---nm】的更多相关文章

nm用于列出程序文件中的符号.建立nmtest.c文件: #include<time.h> int global1; ; static int static_global1; ; void foo() { static int internal1; ; time(); } static void bar() { } int main(void) { int local1; ; foo(); ; }执行 gcc -g -c nmtest.c然后 nm的第一列是指程序运行时符号在内存中的地址,它表…
addr2line用于得到程序指令地址所对应的函数,以及函数所在的源文件名和行号. 在不少嵌入式开发环境中,编译器的名称往往不是gcc,而是想arm-rtems-gcc这样的,对于这种命名形式的编译器,读者通常可以找到arm-rtems-addr2line ,arm-rtems-objdump等相应名称的工具,这是GNU工具集的一种命名惯例. 本文并不是binutils工具集的完整参考手册,当需要得到更为详细的帮助信息时,可以参照对应工具的man和info信息.另一个更为简单的方法时运行相应的工…
GNU为GCC编译器提供了配套的辅助工具集(Binutils)http://www.gnu.org/software/binutils/ 1. addr2line ①将指定地址转换为对应的文件名和行号 ②常用于分析和定位内存访问错误的问题 ③示例:定位0地址访问问题 *开启core dump选项:ulimit -c unlimited(关闭:ulimit -c 0 查看是否开启:ulimit -c) *运行程序,并生成崩溃时的core文件 *读取core文件,获取IP寄存器的值:dmesg co…
#1. 如何使用静态库 制作静态库 (1)gcc *.c -c -I../include得到o文件 (2) ar rcs libMyTest.a *.o 将所有.o文件打包为静态库,r将文件插入静态库中,c创建静态库,不管库是否存在,s写入一个目标文件索引到库中,或者更新一个存在的目标文件索引.mv libMyTest.a ../lib 将静态库文件放置lib文件夹下nm libMyTest.a 查看库中包含的函数等信息 第一种方法:gcc + 源文件 + -L 静态库路径 + -l静态库名 +…
gcc -E 能有效的帮助我们解决与宏有关的编译错误: gcc -S能获得一个C源程序文件的汇编程序: gcc -v能获得系统头文件的路径 生成依赖关系: gcc -M gcc -MM 生成不包含系统头文件的依赖关系 指定链接库: gcc -L:告诉gcc可以从哪个目录查找库文件: gcc -l :用于告诉gcc在生成可执行程序时需要链接的库名: 一.静态库生成步骤如下:步骤一:生成 str_out.o 目标文件gcc -c str_out.c注:不加 -o 则生成同名的 *.o 目标文件(st…
objcopy的作用是拷贝一个目标文件的内容到另一个目标文件中.objcopy使用GNU BFD库去读或写目标文件.objcopy可以使用不同于源目标文件的格式来写目的目标文件(也即是说可以将一种格式的目标文件转换成另一种格式的目标文件).objcopy在进行目标文件的转换时,将生成一个临时文件,转换完成后就将这个临时文件删掉.objcopy使用BFD做转换工作.如果没有明确地格式要求,则objcopy将访问所有在BFD库中已经描述了的并且它可以识别的格式. 这里只介绍arm开发板中可能会用到的…
在嵌入式软件开发中,有时需要知道所生成的程序文件中的段信息以分析问题,或者需要查看c语言对应的汇编代码,此时,objdump工具就可以帮大忙了.obj——object  dump:转储. #include<stdio.h> #include<time.h> int global1; ; static int static_global1; ; void foo() { static int internal1; ; time(); } static void bar() { } i…
1.如果要将多个.o文件生成一个库文件,则存在两种类型的库,一种是静态库,在linux里面后缀是.a,另一种是动态库,后缀为.so. 当可执行程序要与静态库进行链接时,所用到的库中的函数和数据会被拷贝到最终的可执行程序中.而采用动态库则不会,程序加载器在后台为我们讲所需的动态库自动加载到内存中且保证整个系统只有一份拷贝. 如果一个系统中存在多个需要同时运行的程序且这些程序之间存在共享库,那么采用动态库的形式将更节省内存.但是对于嵌入式系统,大多数情况下都是整个软件就是一个可执行程序且不支持动态加…
参考<程序员的自我修养---连接.装载与库> 以下内容转贴自 http://www.cnblogs.com/xuxm2007/archive/2013/02/21/2920890.html GNU Binutils工具 http://www.gnu.org/software/binutils/ http://sourceware.org/binutils/docs-2.23.1/ http://sourceware.org/binutils/docs-2.23.1/binutils/index…
Open Source 开发工具集 转自:http://www.linuxforum.net原作者:gogoliu(Pooh-Bah) 编辑器: vi:老牌编辑器,在各个unix和unix-like平台都可以找到 emacs:GNU项目开发的编辑器,功能强大扩展性强,绝对不是一个编辑器那么简单 代码打补丁工具: diff & patch:一对好搭挡,diff用来生成代码补丁,而patch则用来给代码打补丁 项目构建工具: make(Makefile):常用的项目构建工具,用一个Makefile就…