arm-linux工具
arm-linux工具的功能如下: arm-linux-addr2line 把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。 arm-linux-ar 建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。 arm-linux-c++flit 连接器使用它来过滤 C++ 和 Java 符号,防止重载函数冲突。 arm-linux-gprof 显示程序调用段的各种数据。 arm-linux-ld 是连接器,它把一些目标和归档文件结合在一起,重定位数据,并连接符号引用。通常,建立一个新编译程序的最后一步就是调用ld。 arm-linux-nm 列出目标文件中的符号。 arm-linux-objcopy 把一种目标文件中的内容复制到另一种类型的目标文件中。 arm-linux-objdump 显示一个或者更多目标文件的信息。使用选项来控制其显示的信息,它所显示的信息通常只有编写编译工具的人才感兴趣。 arm-linux-ranlib 产生归档文件索引,并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件。 arm-linux-readelf 显示elf格式可执行文件的信息。 arm-linux-size 列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。 arm-linux-string 打印某个文件的可打印字符串,这些字符串最少4个字符长,也可以使用选项-n设置字符串的最小长度。默认情况下,它只打印目标文件初始化和可加载段中的可打印字符;对于其他类型的文件它打印整个文件的可打印字符。这个程序对于了解非文本文件的内容很有帮助。 arm-linux-strip 丢弃目标文件中的全部或者特定符号。 arm-linux-gcc -wall -O2 -c -o $@ $< -o 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件 -Wall 指定产生全部的警告信息 -O2 编译器对程序提供的编译优化选项,在编译的时候使用该选项,可以使生成的执行文件的执行效率提高 -c 表示只要求编译器进行编译,而不要进行链接,生成以源文件的文件名命名但把其后缀由 .c 或 .cc 变成 .o 的目标文件 -S 只激活预处理和编译,就是指把文件编译成为汇编代码 arm-linux-ld 直接指定代码段,数据段,BSS段的起始地址 -Tbss ADDRESS Set address of .bss section -Tdata ADDRESS Set address of .data section -Ttext ADDRESS Set address of .text section 示例: ${CROSS}ld -Ttext=0x33000000 led.o -o led.elf 使用连接脚本设置地址: arm-linux-ld -Tbeep.lds start.o beep.o -o beep.elf 其中beep.lds 为连接脚本如下: arm-linux-objcopy被用来复制一个目标文件的内容到另一个文件中,可用于不同源文件的之间的格式转换 示例: arm-linux-objcopy –o binary –S elf_file bin_file 常用的选项: input-file , outflie 输入和输出文件,如果没有outfile,则输出文件名为输入文件名 2.-l bfdname或—input-target=bfdname 用来指明源文件的格式,bfdname是BFD库中描述的标准格式名,如果没指明,则arm-linux-objcopy自己分析 3.-O bfdname 输出的格式 4.-F bfdname 同时指明源文件,目的文件的格式 5.-R sectionname 从输出文件中删除掉所有名为sectionname的段 6.-S 不从源文件中复制重定位信息和符号信息到目标文件中 7.-g 不从源文件中复制调试符号到目标文件中 arm-linux-objdump 查看目标文件(.o文件)和库文件(.a文件)信息 arm-linux-objdump -D -m arm beep.elf > beep.dis -D 显示文件中所有汇编信息 -m machine 指定反汇编目标文件时使用的架构,当待反汇编文件本身没有描述架构信息的时候(比如S-records),这个选项很有用。可以用-i选项列出这里能够指定的架构. [guowenxue@localhost asm_c_buzzer]$ cat beep.lds /*********************************************************************** * File: beep.lds * Version: 1.0.0 * Copyright: 2011 (c) Guo Wenxue <guowenxue@gmail.com> * Description: Cross tool link text, refer to u-boot.lds * ChangeLog: 1, Release initial version on "Mon Mar 21 21:09:52 CST 2011" * ***********************************************************************/ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) SECTIONS{ . = 0x33000000; .text : { *(.text) *(.rodata) } .data ALIGN(4): { *(.data) } .bss ALIGN(4): { *(.bss) } } [guowenxue@localhost asm_c_buzzer]$ cat makefile # *********************************************************************** # * File: makefile # * Version: 1.0.0 # * Copyright: 2011 (c) Guo Wenxue <guowenxue@gmail.com> # * Description: Makefile used to cross compile the ASM and C source code # * ChangeLog: 1, Release initial version on "Mon Mar 21 21:09:52 CST 2011" # * # *********************************************************************** CROSS = /opt/buildroot-2011.02/arm920t/usr/bin/arm-linux- CFLAGS = beep.bin: start.S beep.c arm-linux-gcc $(CFLAGS) -c -o start.o start.S arm-linux-gcc $(CFLAGS) -c -o beep.o beep.c arm-linux-ld -Tbeep.lds start.o beep.o -o beep.elf arm-linux-objcopy -O binary -S beep.elf beep.bin rm -f *.elf *.o install: cp beep.bin ~/winxp -f --reply=yes clean: rm -f *.elf *.o rm -f beep.bin |
转
arm-linux工具的更多相关文章
- Linux ARM交叉编译工具链制作过程【转】
本文转载自:http://www.cnblogs.com/Charles-Zhang-Blog/archive/2013/02/21/2920999.html 一.下载源文件 源代码文件及其版本与下载 ...
- ARM 开发工具 Keil和DS-5的比较。
http://www.eeboard.com/bbs/thread-25219-1-1.html 如今ARM体系架构的处理器在嵌入式市场上呼风唤雨,从低端的MCU应用到高端的多媒体消费电子,移动设备领 ...
- 构建 ARM Linux 4.7.3 嵌入式开发环境 —— BusyBox 构建 RootFS
上一篇我们已经成功将 ARM Linux 4.7.3 的内核利用 U-BOOT 引导了起来.但是细心的你会发现,引导到后面,系统无法启动,出现内核恐慌 (Kernel Panic). 原因是找不到文件 ...
- ARM Linux 3.x的设备树(Device Tree)
http://blog.csdn.net/21cnbao/article/details/8457546 宋宝华 Barry Song <21cnbao@gmail.com> 1. ...
- ARM Linux 3.x的设备树(Device Tree)
1. ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pai ...
- ARM Linux从Bootloader、kernel到filesystem启动流程
转自:http://www.veryarm.com/1491.html ARM Linux启动流程大致为:bootloader ---->kernel---->root filesyste ...
- 【转】 ARM Linux 3.x的设备树(Device Tree)
1. ARM Device Tree起源 http://blog.csdn.net/21cnbao/article/details/8457546 Linus Torvalds在2011年3月1 ...
- Ubuntu12.4 64位 安装 arm linux gcc 4.3.2
一.下载arm linux gcc 4.3.2 http://pan.baidu.com/share/link?shareid=1575352696&uk=2754759285&fid ...
- 【转】ARM Linux 3.x的设备树(Device Tree)
原文网址:http://blog.csdn.net/21cnbao/article/details/8457546 1. ARM Device Tree起源 Linus Torvalds在201 ...
- 【转】ARM交叉编译工具链
原文网址:http://www.veryarm.com/cross-tools 为什么要用交叉编译器? 交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台( ...
随机推荐
- Java项目使用oh-my-email发送邮件
本文使用Github开源项目oh-my-email进行测试邮件发送,并未进行更为深度的测试,如果想要快速使用,的确是一个很好的邮件发送组件.https://github.com/biezhi/oh-m ...
- python--sha256
import hmacimport hashlib def get_hmacsha256(key, message): key_bytes = bytes(key, 'utf-8') message_ ...
- Openstack实现共有云多flat网络
首先给两台虚拟机添加网卡,模式为仅主机模式 配置控制节点IP /etc/sysconfig/network-scripts/ifcfg-eth1 TYPE=Ethernet BOOTPROTO=sta ...
- netty 网关 http请求 请求转发
https://netty.io/4.1/xref/io/netty/example/proxy/package-summary.html https://netty.io/4.1/xref/io/n ...
- null array mysqli_fetch_assoc ( mysqli_result $result ) void mysqli_free_result ( mysqli_result $result )
w取最大db_id. if($row=null){ var_dump(123); } var_dump($row); if($rowb=array('ww','w123')){ var_dump(23 ...
- hbctf---whatiscanary学习
题目中除了能栈溢出实在找不到其他能泄露信息的地方了.而且也没法修改GOT表,始终绕不过stack_chk_fail函数.感到无从下手.只到官方给WP了,才觉得自己基础太过浅薄了. 如果我们仔细观察崩溃 ...
- BitCoin Trading Strategies BackTest With PyAlgoTrade
Written by Khang Nguyen Vo, khangvo88@gmail.com, for the RobustTechHouse blog. Khang is a graduate f ...
- php 安装yaf扩展和yaf框架
一.安装yaf扩展(windows安装) 1.查看你电脑安装的开发环境(phpinfo()的信息),查找 "Zend Extension Build"和"PHP Exte ...
- Myeclipse更新SVNStatusSubscriber 时报告了错误。1 中的 0 个资源已经同步。
1.先确认SVN服务是否能连接,或权限. 方法:在项目目录下右键选择repo-browser 能打开就表示正常. 2.同样在项目目录下选择cleaup 选择下面3个选项 clean up workin ...
- LInux中ThreadInfo中的preempt_count字段
最近看各种上下文,发现和ThreadInfo中的preemption字段密切,于是便调查了下. 看下Linux源码中的注释: /* * We put the hardirq and softirq c ...