| 
 
| -------------------------------------------------------------------------------------------------------------- 
 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     查看二进制文件
 
 
 
 -------------------------------------------------------
 | 
 |