IDE Anjuta http anjuta sour Ada bash c

  • Slides: 62
Download presentation

博创科技 嵌入互动 IDE 集成开发环境 ³ 很多公司提供 集成开发环境, 一般这些集成 开发环境 主 要用于本地的 开发,也可以 通过定制为交 叉开发环境。

博创科技 嵌入互动 IDE 集成开发环境 ³ 很多公司提供 集成开发环境, 一般这些集成 开发环境 主 要用于本地的 开发,也可以 通过定制为交 叉开发环境。 右表列出了几 种集成开发环 境 位置 支持语言 Anjuta http: //anjuta. sour Ada bash c c++ ceforge. net java perl Eclipse http: //www. eclips C C++ java e. org. Glimmer http: //glimmer. so Ada bash C C++ urceforge. net/ Java make perl x 86 KDevelop http: //www. kdev elop. org/ Source. Navigator http: //sources. re C C++ Java, dhat. com/source Python nav/ Source insight (windows) http: //www. sourc c/c++ c# java edyn. com © 2006 博创科技 C C++ Java

博创科技 嵌入互动 GCC(GNU Compiler Collection)程序编译四阶段 ³ 预处理(Pre-Processing) ³ 编译(Compiling) ³ 汇编(Assembling) ³ 链接(Linking) ©

博创科技 嵌入互动 GCC(GNU Compiler Collection)程序编译四阶段 ³ 预处理(Pre-Processing) ³ 编译(Compiling) ³ 汇编(Assembling) ³ 链接(Linking) © 2006 博创科技

博创科技 嵌入互动 GCC起步 hello. c #include <stdio. h> int main(void) { printf (“Hello world,

博创科技 嵌入互动 GCC起步 hello. c #include <stdio. h> int main(void) { printf (“Hello world, Linux programming!n”); return 0; } 然后执行下面的命令编译和运行这段程序: $ gcc hello. c -o hello $. /hello Hello world, Linux programming! © 2006 博创科技

博创科技 嵌入互动 hello+. C ³ ³ ³ ³ ³ #include<iostream. h> int main(void) {

博创科技 嵌入互动 hello+. C ³ ³ ³ ³ ³ #include<iostream. h> int main(void) { int i, j; j=0; i=j+1; cout<<"Hello world!"<<endl; cout<<"the result is "<<i<<endl; return 0; } © 2006 博创科技

博创科技 嵌入互动 Makefile文件 #This is a example for us to know the Makefile CC=/usr/local/arm-linux/bin/arm-linux-gcc

博创科技 嵌入互动 Makefile文件 #This is a example for us to know the Makefile CC=/usr/local/arm-linux/bin/arm-linux-gcc #指定编译器 LIB=/usr/local/arm-linux/lib #指定所用库的搜索路 径 EXEC=star #定义目 标文件名 OBJS=star. o hello. o #为生成目标所 使用的. o文件 $(EXEC): $(OBJS) #目标与. o文件 的依赖关系 $(CC) -I$(LIB) -o $(EXEC) $(OBJS) #生成可执行文件 star. o: starfun. h star. c #star. o依赖 starfun. h, star. c $(CC) -c star. c #生成star. o hello. o: starfun. h hello. c #hello. o依赖 starfun. h, hello. c $(CC) -c hello. c #生成hello. o © 2006 博创科技 clean: #clean

博创科技 嵌入互动 ³ CC= gcc ³ EXEC = hello ³ OBJS = hello. o

博创科技 嵌入互动 ³ CC= gcc ³ EXEC = hello ³ OBJS = hello. o ³ CFLAGS += ³ LDFLAGS+= –static ³ all: $(EXEC) ³ $(EXEC): $(OBJS) ³ $(CC) $(LDFLAGS) –o [email protected] $(OBJS) ³ clean: ³ -rm -f $(EXEC) *. elf *. gdb *. o © 2006 博创科技

博创科技 嵌入互动 利用 GNU Autoconf 及 Automake 生成Makefile ³ 建立文件夹mkfldemo 2 ³ 将hello文件夹下的hello. c文件copy到

博创科技 嵌入互动 利用 GNU Autoconf 及 Automake 生成Makefile ³ 建立文件夹mkfldemo 2 ³ 将hello文件夹下的hello. c文件copy到 mkfldemo 2下 ² 执行 $ autoscan $ ls autoscan. log configure. scan hello. c ² 执行 autoscan 后会产生一个configure. scan 的 文件,可以用它做为configure. in文件的模板 © 2006 博创科技

博创科技 嵌入互动 ³ 编辑 configure. scan 如下所示,并且把它改名为 configure. in ² dnl Process this file

博创科技 嵌入互动 ³ 编辑 configure. scan 如下所示,并且把它改名为 configure. in ² dnl Process this file with autoconf to produce a configure script. AC_INIT(hello. c) AM_INIT_AUTOMAKE(hello, 1. 0) dnl Checks for programs. AC_PROG_CC dnl Checks for libraries. dnl Checks for header files. dnl Checks for typedefs, structures, and compiler characteristics. dnl Checks for library functions. AC_OUTPUT(Makefile) © 2006 博创科技

博创科技 嵌入互动 ³ 执行 aclocal 和 autoconf分别会产生 aclocal. m 4 及 configure ² $

博创科技 嵌入互动 ³ 执行 aclocal 和 autoconf分别会产生 aclocal. m 4 及 configure ² $ aclocal $ autoconf $ ls aclocal. m 4 autom 4 te. cache configure. in © 2006 博创科技 autoscan. log hello. c

博创科技 嵌入互动 建立Makefile. am文件内容如下 ³ AUTOMAKE_OPTIONS= foreign bin_PROGRAMS= hello_SOURCES= hello. c © 2006 博创科技

博创科技 嵌入互动 建立Makefile. am文件内容如下 ³ AUTOMAKE_OPTIONS= foreign bin_PROGRAMS= hello_SOURCES= hello. c © 2006 博创科技

博创科技 嵌入互动 ³ 执行 automake --add-missing ,automake 会根据 makefile. am 定义的参数,产生 Makefile. in文件 $

博创科技 嵌入互动 ³ 执行 automake --add-missing ,automake 会根据 makefile. am 定义的参数,产生 Makefile. in文件 $ automake --add-missing $ ls 执行:$. /configure即可生成Makefile文件 执行 $ make 进行编译 © 2006 博创科技

博创科技 嵌入互动 ³ 使用armv 4 l-linux-gcc编译hello. c, 生成hello文件, 与使用Mikefile方式比较 $ armv 4 l-linux-gcc hello.

博创科技 嵌入互动 ³ 使用armv 4 l-linux-gcc编译hello. c, 生成hello文件, 与使用Mikefile方式比较 $ armv 4 l-linux-gcc hello. c –o hello © 2006 博创科技

博创科技 嵌入互动 GDB中常用命令 ³ list or l (list code) ² list main ² list

博创科技 嵌入互动 GDB中常用命令 ³ list or l (list code) ² list main ² list 20 ³ run or r (run program from beginning) ² run file 1. txt ³ next or function ³ step or function file 2. txt n (execute next line, step over calls) s (execute next line, step into calls) © 2006 博创科技

博创科技 嵌入互动 ³ break or b (set a breakpoint) ² break main ² break

博创科技 嵌入互动 ³ break or b (set a breakpoint) ² break main ² break 10 ³ delete or d (delete a breakpoint) ² delete 10 ³ continue or c (continue execution when stopped) © 2006 博创科技

博创科技 嵌入互动 ³ print or p (print value) ² print x*y ² print function(x)

博创科技 嵌入互动 ³ print or p (print value) ² print x*y ² print function(x) ³ display (continuously display value) ³ undisplay (remove display value) ³ where (show current function stack) © 2006 博创科技

博创科技 嵌入互动 ³ set (change a value) ² Set n=3 ³ help or h

博创科技 嵌入互动 ³ set (change a value) ² Set n=3 ³ help or h (display help text) ² Help step ² Help breakpoints ³ quit or q (quit GDB) © 2006 博创科技

博创科技 嵌入互动 在开发板上启动gdbserver ³ 在远程体调试的第一步就是要在开发办上启动 gdbserver 具,可以采用两种不同的连接方式 主机ip地址及端口号 ³ 网口 [/mnt/yaffs]. /gdbserver 192. 168.

博创科技 嵌入互动 在开发板上启动gdbserver ³ 在远程体调试的第一步就是要在开发办上启动 gdbserver 具,可以采用两种不同的连接方式 主机ip地址及端口号 ³ 网口 [/mnt/yaffs]. /gdbserver 192. 168. 0. 47: 1234 Process hello created; pid = 105 hello 开发板串口号 ³ 串口 [/mnt/yaffs]. /gdbserver /dev/tts/0 hello Process hello created; pid = 112 Remote debugging using /dev/tts/0 © 2006 博创科技

博创科技 嵌入互动 在主机上启动arm-linux-gdb ³ 在开发板上启动gdbserver以后,第二步就是在主机 上运行arm-linux-gdb来启动gdb调试应用程序,同 样针对于启动的连接方式不同选用不同的参数 [root@localhost gcc-gdb]# armv 4 l-unknown-linux-gdb hello GNU

博创科技 嵌入互动 在主机上启动arm-linux-gdb ³ 在开发板上启动gdbserver以后,第二步就是在主机 上运行arm-linux-gdb来启动gdb调试应用程序,同 样针对于启动的连接方式不同选用不同的参数 [[email protected] gcc-gdb]# armv 4 l-unknown-linux-gdb hello GNU gdb 5. 2. 1 Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "--host=i 686 -pc-linux-gnu --target=armv 4 l-unknown-linux". . . (gdb) © 2006 博创科技

博创科技 嵌入互动 开发板ip地址及端口号 启动远程调试功能 (gdb) target remote 192. 168. 0. 115: 1234 Remote debugging

博创科技 嵌入互动 开发板ip地址及端口号 启动远程调试功能 (gdb) target remote 192. 168. 0. 115: 1234 Remote debugging using 192. 168. 0. 115: 1234 启用串口方式调试: 0 x 40000 d 00 in ? ? () (gdb) target remote /dev/tty. S 0 (gdb) list 1 #include <stdio. h> 2 3 int main () { 4 5 int i; 6 for ( i =0; i < 10; i++ ) 7 { 8 printf ("helloworld. . NOM %dn", i ); 9 } 10 return 0; (gdb) © 2006 博创科技

博创科技 嵌入互动 设置断点 (gdb) break main Breakpoint 1 at 0 x 20003 a 0:

博创科技 嵌入互动 设置断点 (gdb) break main Breakpoint 1 at 0 x 20003 a 0: file hello. c, line 6. (gdb) break 8 Breakpoint 2 at 0 x 20003 bc: file hello. c, line 8. (gdb) c Continuing. Breakpoint 1, main () at hello. c: 6 6 for ( i =0; i < 10; i++ ) (gdb) c Continuing. Breakpoint 2, main () at hello. c: 8 8 printf ("helloworld. . NOM %dn", i ); (gdb) © 2006 博创科技