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 [email protected] $<

-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选项列出这里能够指定的架构.

[[email protected] asm_c_buzzer]$ cat beep.lds

/***********************************************************************

*        File:  beep.lds

*     Version:  1.0.0

*   Copyright:  2011 (c) Guo Wenxue <[email protected]>

* 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)

}

}

[[email protected] asm_c_buzzer]$ cat makefile

# ***********************************************************************

# *        File:  makefile

# *     Version:  1.0.0

# *   Copyright:  2011 (c) Guo Wenxue <[email protected]>

# * 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

          转

时间: 2024-08-02 09:38:27

arm-linux工具的相关文章

浅析 Linux 下的 arm 交叉编译工具

什么是交叉编译工具 http://elinux.org/Toolchains 要解释交叉编译工具,我们首先要理解三个基本概念: 编译平台:是指该编译器是在哪个平台编译出来的 编译主机:编译器运行在哪个平台 目标平台:编译器为哪个平台产生代码 比如我们在 Ubuntu(Linux) 下编译 arm 开发板的程序,那么: 编译平台就是 X86,该编译器在 x86上运行 编译主机就是这台运行 Ubuntu Linux 的电脑 目标平台就是 arm 开发板 所以通常所指的交叉编译,就是在该平台编译生成在

ARM交叉编译工具链分类说明

转载整理自:http://www.veryarm.com/cross-tools 从授权上,ARM交叉编译工具链分为免费授权版和付费授权版. 免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译制作),第二是 Codesourcery,第三是Linora. 收费版有ARM原厂提供的armcc.IAR提供的编译器等等,因为这些价格都比较昂贵,不适合学习用户使用,所以不做讲述. ·        arm-none-linux-gnueabi-gcc:是 Codesourcery 公司(目

ARM Linux从Bootloader、kernel到filesystem启动流程

转自:http://www.veryarm.com/1491.html ARM Linux启动流程大致为:bootloader ---->kernel---->root filesystem.bootloader 是一上电就拿到cpu 的控制权的,而bootloader实现了硬件的初始化.bootloader俨然就成了Power on 之后”第一个吃螃蟹”的代码. 谈到这就得想到硬件机制是如何满足这个功能的了.CPU内部一般都集成小容量的SRAM (又叫stapping stone,垫脚石),

学习ARM+Linux的很好的资料(转)

前段时间做了一个关于ARM9 2440资料的汇总帖,很高兴看到***和CSDN等论坛朋友们的支持和鼓励.当年学单片机的时候datasheet和学习资料基本都是在论坛上找到的,也遇到很多好心的高手朋友,耐心的回答我提出的问题.感激.图报,很简单的想法.希望这次整理的资料帖能对更多的嵌入式爱好者朋友带来帮助! PS:    在此特别感谢 古道热肠 版主把我的帖子加精,给小弟极大鼓舞! 嵌入式入门篇: 什么是嵌入式系统                         http://www.helloa

ARM Linux 3.x的设备树(Device Tree)【转】

转自:http://blog.csdn.net/21cnbao/article/details/8457546 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] ARM Device Tree起源 Device Tree组成和结构 DTS device tree source DTC device tree compiler Device Tree Blob dtb Binding Bootloader Device Tree引发的BSP和驱动变更 常用OF API 总结

【转】ARM交叉编译工具链

原文网址:http://www.veryarm.com/cross-tools 为什么要用交叉编译器? 交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行,虽然两个平台用的都是Linux系统. 交叉编译工具链是一个由编译器.连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils.gc

ARM Linux 3.x的设备树(Device Tree)

1.    ARM Device Tree起源 在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾,如板上的platform设备.resource.i2c_board_info.spi_board_info以及各种硬件的platform_data.读者有兴趣可以统计下常见的s3c2410.s3c6410等板级目录,代码量在数万行.社区必须改变这种局面,

ARM+Linux 嵌入式开发环境搭建

这些都是自个从一月份开始学习ARM+Linux中遇到的问题做的笔记,我觉得很有用,所以分享出来! 因为没有老师教,自己琢磨遇到的问题很多,欢迎交流! -------------------------------------------------------------------------------------------------- 零点漂移队:封尘浪 ------------------------------------------------------------------

ARM交叉编译工具制作V2

此篇是<Ubuntu ARM交叉编译工具链制作过程>的升级版本. 本文主机环境为Ubuntu10.04.4桌面版 内核:2.6.32 GCC:4.4.3 ---------------------------------------------------转载请注明:xiaobin_hlj80---- Z.前期准备(使用root权限) 安装系统补丁258个(2014-11-24) 一.主机环境 1. 更改shell为bash 如果运行 ls -la /bin/sh 看到是 dash ,则请运行

[转]ARM Linux 3.x Device Tree Usage

此文转自:http://blog.csdn.net/21cnbao/article/details/8457546 更详细内容可以参考官网 Device Tree 官网:http://devicetree.org/Device_Tree_Usage 1.    ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Li