arm-linux工具的几种使用简单说明

arm-linux-gcc

(1)-c 预处理,编译和汇编源文件,但是不连接。及生成OBJ文件 (.o后缀的文件) 。 

(2)-S(大写) 编译后停止,不进行汇编。及将非汇编文件翻译为汇编文件(.s后缀的文件)

(3)-o file指定输出文件为file。无论是预处理,编译和汇编还是连接都可以用。如果没有使用-o选项,默认的输出结果是:可执行文件“a.out”。

(4)-E预处理后即停止,不进行编译。预处理后代码送往标准输出。gcc忽略任何不需要预处理的文件。

arm-linux-ld

-T 只用于连接Bootloader,内核等“没有底层软件支持”的软件;连接运行于操作系统之上的应用程序时,无需指定-T选项,它们默认的方式进行连接。

-Ttext startaddr

-Tdata startaddr

-Tbss startaddr

“startaddr”分别表示 代码段(Ttext),数据段(Tdata),bss段(Tbss)的起始地址,它们被依次放在代码段的后面。

-Tfile.lds,既使用连接脚本文件file.lds来设置代码段(Ttext),数据段(Tdata),bss段(Tbss)的位置信息。

arm-linux-objcopy

-O bfdname(大写O)使用指定的格式来输出文件,bfdname是BFD库中描述的标准格式名。如:-O binary 表示二进制代码输出。

arm-linux-objdump 

用来显示二进制文件信息,常用来显示查看反汇编代码。

-disassemble或者-d

反汇编可执行段

-disassemble-all或者-D

反汇编所有段


一个简单的写好的Makefile的内容

led.bin: start.o
        arm-linux-ld -Ttext 0 -o led.elf start.o
        arm-linux-objcopy -O binary led.elf led.bin
        arm-linux-objdump -D led.elf > led.dis


start.o : start.S
        arm-linux-gcc -o start.o start.S -c


clean:
        rm *.o led.elf led.bin led.dis

 “>”输出重定位标志:

     上例中所使用的”>“是输出重定向。通常在Linux上执行一个shell命令行时,会自动打开三个标准文件:标准输入文件(stdin),即通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),前两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,并且将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。这就是通常使用的标准输入/输出方式。

     直接使用标准输入/输出文件存在以下问题:首先,用户输入的数据只能使用一次。当下次希望再次使用这些数据时就不得不重新输入。同样,用户对输出信息不能做更多的处理,只能等待程序的结束。

    为了解决上述问题,Linux 系统为输入、输出的信息传送引入了两种方式:输入/输出重定向机制和管道。其中,输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。也就是说,输入可以不来自键盘,而来自一个指定的文件。同样,输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就可以不显示在屏幕上,而是写入到指定文件中。就如上述例子中所用到的把“arm-linux-objdump -D led.elf”的结果重定向到led.dis文件中。这就大大增加了输入/输出的灵活性。 

(部分内容摘自:《嵌入式linux应用开发详解》)

“>>”两个符号表示追加,

如 "echo "123" >> hello.txt

表示将123追加到hello.txt文件中去。

        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值