创建交叉编译环境 QEMU、GDB的安装及简单使用
(2013-05-07 15:34:38)分类: Linux实验 |
2.4
实例—创建交叉编译环境
1.从网上下载或使用开发板公司在附赠光盘中提供的交叉编译工具链
(1)从网上下载arm-linux-gcc或arm-linux-tools压缩包
(2)解压arm-linux-gcc-2.95.3.tar.bz2到/usr/local/arm/中
# mkdir /usr/local/arm
# tar -xjvf arm-linux-gcc-2.95.3.tar.bz2 -C /usr/local/arm/
# ls -F /usr/local/arm/2.95.3/
arm-linux/ |
arm-linux-gcc-2.95.3版本的交叉编译器用于编译Linux2.4内核、BusyBox、BootLoader(u-boot)等。
(3)解压arm-linux-gcc-3.4.1.tar.bz2到/usr/local/arm/中
# tar -xjvf arm-linux-gcc-3.4.1.tar.bz2 -C
# ls -F /usr/local/arm/3.4.1/
arm-linux/ |
arm-linux-gcc-3.4.1及其以后版本的交叉编译器用于编译Linux2.6内核、BusyBox、BootLoader(u-boot)等。在编译时如果所用的版本不行的话,可以试试其它的版本,可以在Makefile文件中指定。
(4)解压arm-linux-tools-20070808.tar.gz(4.2.1版本)
# tar -xzvf arm-linux-tools-20070808.tar.gz
# arm-linux-
arm-linux-addr2line arm-linux-addr2name.awk
arm-linux-ar
arm-linux-as
arm-linux-c++
arm-linux-c++filt
arm-linux-cpp
arm-linux-elf2flt |
# which arm-linux-gcc
/usr/local/bin/arm-linux-gcc |
# ll /usr/local/bin/arm-linux-*
-rwxr-xr-x. 2 root
root -rwxr-xr-x. 2 root
root |
至此,arm-linux-*交叉编译工具链安装成功。
注意:经过上述安装步骤,本系统默认的arm-linux-gcc是arm-linux-gcc-4.2.1,如果要使用其它版本,可以在Makefile文件中指定。
2.5
实例—QEMU、GDB的安装及简单使用
2.5.1 QEMU的安装
1.在http://www.qemu.org/下载QEMU最新版
# wget http://wiki.qemu-project.org/download/qemu-1.4.0.tar.bz2
2.解压qemu-1.4.0.tar.bz2
# tar -xjvf qemu-1.4.0.tar.bz2
3.生成QEMU的Makefile
# cd qemu-1.4.0
# ./configure --target-list=arm-softmmu,arm-linux-user
4.编译、安装QEMU
# make -j
2
# make
install
5.查看QEMU版本
# qemu-arm -version
qemu-arm version 1.4.0, Copyright (c) 2003-2008 Fabrice Bellard |
# qemu-system-arm --version
QEMU emulator version 1.4.0, Copyright (c) 2003-2008 Fabrice Bellard |
6.查看QEMU命令
# qemu
qemu-arm qemu-ga qemu-img qemu-io qemu-nbd qemu-system-arm |
2.5.2 GDB 的安装
1.在http://www.gnu.org/software/gdb/下载GDB最新版
# wget ftp://sourceware.org/pub/gdb/releases/gdb-7.5.1.tar.bz2
2.解压gdb-7.5.1.tar.bz2
# tar -xjvf gdb-7.5.1.tar.bz2
3.生成GDB的Makefile
# cd gdb-7.5.1
# ./configure --target=arm-linux
4.编译、安装GDB
# make
# make install
两个命令安装在/usr/local/bin/:arm-linux-run、arm-linux-gdb。
5.查看GDB版本
# arm-linux-gdb -v
GNU gdb (GDB) 7.5.1 |
2.5.3
运行ARM汇编程序
1.编辑汇编源文件test.S
# cat test.S
.section .data msg:
len = . - msg .section .text .globl _start _start:
|
2.汇编、链接、执行
# arm-linux-as test.S -o test.o
# arm-linux-ld test.o -o test
# qemu-arm test
Hello, ARM! |
2.5.4
调试ARM汇编程序
注意,需要打开两个终端窗口,它们的当前路径一样。
1.第一个终端窗口:汇编、链接、执行
# arm-linux-as test.S -g -o test.o
# arm-linux-ld test.o -o test
# qemu-arm -g 9999 test
2.第二个终端窗口:执行arm-linux-gdb
# service iptables stop
# arm-linux-gdb test
GNU gdb (GDB) 7.5.1 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by
law. and "show warranty" for details. This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-linux". For bug reporting instructions, please see: ... Reading symbols from /root/桌面/嵌入式教程/test...done. (gdb) target remote localhost:9999 Remote debugging using localhost:9999 [New Remote target] [Switching to Remote target] _start () at test.S:12
12 (gdb) disassemble Dump of assembler code for function _start: => 0x00008074
<+0>: End of assembler dump. (gdb) info register
r0
r1
r2
r3 r4
r5
r6
r7
r8
r9
r10
r11
r12
sp
lr pc
cpsr (gdb) si
13 (gdb) si
14 (gdb) si
15 (gdb) info register
r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
r10
r11
r12
sp
lr
pc
cpsr (gdb) si
16 (gdb) disassemble Dump of assembler code for function _start: => 0x00008084
<+16>: End of assembler dump. (gdb)
si
19 (gdb) si
20 (gdb) si
21 (gdb) disassemble Dump of assembler code for function _start: => 0x00008090
<+28>: End of assembler dump. (gdb) info register
r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
r10
r11
r12
sp
lr
pc
cpsr (gdb)
si [Inferior 1 (Remote target) exited normally] (gdb) |