--------------------------------------------------------------------------------------------------------------
linux下的开发
下载地址:
http://www.codesourcery.com/gnu_toolchains/arm/download.html
http://ftp.denx.de/pub/eldk/4.2/arm-linux-x86/distribution/
安装arm-linux-gcc一、解压arm-linux-gcc到/opt中
二、在~/.bashrc中设置环境变量并更新
export PATH=$PATH:/opt/。。。/bin
$source .bashrc
三、查看版本
$arm-linux-gcc -v
对于64位机器需要安装32位的依赖库:
glib*.i686
zlib*.i686
GNU ARM开发工具的使用
1.编译器arm-linux-gcc
Arm-linux-gcc -v :查看版本信息
Arm-linux-gcc -E xxx.c -oxxx.i :只做预处理,生成.i文件(E大写)
Arm-linux-gcc -c xxx.c :只做编译,生成.o文件
Arm-linux-gcc -S xxx.c :只做汇编,生成.s文件(S大写)
Arm-linux-gcc xxx.c :预处理,编译,汇编,链接,生成a.out文件
Arm-linux-gcc xxx.c -oxxx :预,编,汇,链,生成xxx文件
Arm-linux-gcc-Wall xxx.c :生成尽可能多的警告信息(W大写)
makefile:
%.o : %.S
arm-linux-gcc -o $@ $< -c
%.o : %.c
arm-linux-gcc -o $@ $< -c
将所有的.S文件和.c文件编译成.o文件
2.连接器arm-linux-ld
用于连接目标文件和系统库中的函数代码(目标代码)
arm-linux-ld libfile1 libfile2 -lc -o file.elf file.o
将两个库文件和目标文件连接生成可执行elf文件。
makefile:XXX.bin:XXX.o...
arm-linux-ld -Ttext 0xXXX –o XXX.elf $^
-Ttext address #表示程序的运行地址
3.文件格式转换arm-linux-objcopy
将生成的.elf文件或者.o文件转换成二进制文件。
arm-linux-objcopy -O binary file.elf file.bin (O大写)
makefile:
arm-linux-objcopy –O binary XXX.elf XXX.bin
4.反汇编arm-linux-objdump
将elf格式的可执行文件反汇编成汇编代码文件
arm-linux-objdump -D file.elf >file.asm (S大写)
makefile:
arm-linux-objdump -D XXX.elf > XXX_elf.dis #调试程序时可能会用到
5.汇编器arm-linux-as
将汇编源文件汇编成目标文件
arm-linux-as hello.S -o hello.o
6.elf格式文件查看arm-linux-readelf
查看elf格式的文件的信息
arm-linux-readelf -a file.elf
arm-linux-readelf -a file.elf | grep Share (S大写)
7.静态库管理arm-linux-ar
可以将产生的.o目标文件添加到库中,也可查看库中的目标文件。
Arm-linux-ar rc file.a file.o 将file.o生成file.a库文件
8.符号表生成指令arm-linux-nm
arm-linux-nm file.elf >sym
生成elf文件中的符号,重定向到sym中
9.去掉elf文件中不需要的信息和代码arm-linux-strip
去掉文件中不使用的信息,减小目标文件体积
arm-linux-strip file.elf
10.列出目标文件大小arm-linux-size
arm-linux-size
------------------------------------------------------
其他工具
hexdump -C file.bin 查看二进制文件
------------------------------------------------------- |