用linux程序制作一个小动画,第5章 嵌入式Linux应用程序开发

第5章 嵌入式Linux应用程序开发&nbsp 分类:其他 | 上传于: 2020-01-10 20:30:30

嵌入式Linux应用程序开发\r\n" 2."5.1 开发环境的建立\r\n进行项目开发前,首先要做的是搭建一套基于Linux操作系统的应用开发环境,一般由目标板和宿主机所构成。目标板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主机来完成。开发环境对硬件没有特殊的要求,但是为了双方之间建立连接关系,关键的接口包括串口、以太网口和USB口等是必不可少的。\r嵌入式Linux的开发环境\r传统的嵌入式开发环境需要单片机的仿真器,包含C语言、汇编语言、调试工具等的集成开发环境IDE和实时操作系统等,整个开发系统建立起来至少需要几万元。由于Flash技术的发展,特别是一些CPU可以用JTAG接口下载调试,故仿真器已可以省去。随着标准化的推广,JTAG调试工具变得越来越简单、越来越通用。一些BDM调试工具已经简单到只需在PC机并行口和单片机的JTAG接口之间加一级5V到3.3V的电平转换,这使得自制调试工具变得越来越容易。软件方面,Linux下的自由软件GNU gcc可以完成几乎所有知名CPU,以及DSP的交叉C编译和调试,故可以省去IDE。\r个人用Linux开发嵌入式应用程序,可以在自己的PC机上安装一套Linux操作系统,使用Linux中的X Windows打开若干个窗口用于编译、下载、调试等。\r如果整个研发小组由多名工程师组成,常采用的办法是:用1台PC机运行Linux作为服务器;开发小组中每个成员都通过局域网用Telnet登录到这台Linux服务器上去;被开发的目标板也挂在网上。在服务器的Linux环境下,各个工程师用GNU gcc编译生成目标代码,再用FTP传回到自己的PC机上,然后通过串行口或网络下载到目标机上。\r\n" 3."利用Cygwin建立模拟环境 \r\n" 4."" 5."" 6."" 7."交叉编译环境的建立 \r\n交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在宿主机上对即将运行在目标机上的应用程序进行编译,生成可在目标机上运行的代码格式。交叉编译环境是一个由编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要包括针对目标系统的编译器gcc、目标系统的二进制工具binutils、目标系统的标准c库glibc和目标系统的Linux内核头文件。\r在建立交叉编译环境之前,首先需要下载包括binutils、gcc、glibc及Linux内核在内的源代码,尽量选用较新版本,glibc和内核源代码的版本必须与目标机上实际使用的版本保持一致,并设定shell变量PREFIX指定可执行程序的安装路径。\r(1)编译binutils。\r运行configure文件,并使用--prefix=$PREFIX参数指定安装路径,使用--target=arm-linux参数指定目标机类型,然后执行make install。\r(2)配置Linux内核头文件。\r执行make mrproper进行清理工作,然后执行make config ARCH=arm(或make menuconfig/xconfig ARCH=arm)进行配置。一定要在命令行中使用ARCH=arm指定CPU架构,因为默认架构为主机的CPU架构,这一步需要根据目标机的实际情况进行详细的配置。\r配置完成之后,需要将内核头文件拷贝到安装目录: \rcp -dR include/asm-arm \r$PREFIX/arm-linux/include/asm\rcp -dR include/linux \r$PREFIX/arm-linux/include/linux \r\n" 8."(3)第一次编译gcc。configure的运行参数设置:\r--prefix=$PREFIX\r--target=arm-linux\r--disable-threads\r--disable-shared\r--enable-languages=c\r执行make install,将生成一个最简单的gcc。由于编译整个gcc是需要目标机的glibc库的,它现在还不存在,因此需要首先生成一个最简单的gcc,它只需要具备编译目标机glibc库的能力即可。\r(4)交叉编译glibc。\r由于这一步骤生成的代码是针对目标机cpu的,因此它属于一个交叉编译过程。又因为该过程要用到Linux内核头文件,默认路径为$PREFIX/arm-linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一个名为sys-linux的软连接,使其指向内核头文件所在的include目录;也可以在接下来要执行的configure命令中使用--with-headers参数指定linux内核头文件的实际路径。\rconfigure的运行参数设置如下,因为是交叉编译,所以要将编译器变量CC设为arm-linux-gcc:\rCC=arm-linux-gcc ./configure \r--prefix=$PREFIX/arm-linux \r--host=arm-linux \r--enable-add-ons \r最后,按以上配置执行configure和make install,glibc的交叉编译过程就算完成了,这里需要指出的是,glibc的安装路径设置为$PREFIXARCH=arm/arm-linux,如果此处设置不当,第二次编译gcc时可能找不到glibc的头文件和库。 \r\n" 9."(5)第二次编译gcc。\r运行configure,参数设置为\r--prefix=$PREFIX --target=arm-linux \r--enable-languages=c 10.c 。 \r运行make install。 \r到此为止整个交叉编译环境就完全生成了。 \r建立一个交叉编译工具链是一个相当复杂的过程,为了节省时间,网上有一些编译好的可用的交叉编译工具链可以下载。本书所附光盘也带有编译好的交叉编译工具链arm-linux- toolchains.tgz,只需简单地解压缩即可使用:\rtar xvzf arm-linux-toolchains.tgz –C /arm9\r假设工具链解压缩到目录/arm9。\r解压完毕后把工具链目录加入到环境变量PATH中即可。\r交叉编译工具做完后,简单验证一下。首先用文字输入软件建立一个helloworld.c文件:\r#include \rint main(void)\r{\r printf(\"hello world\\n\");\r return 0;\r}\r然后在命令行执行:\r$arm-linux-gcc helloworld.c -o helloworld\r$file helloworld\r如果输出以下信息,说明成功建立了编译工具。\rhelloworld: ELF 32-bit LSB executable 11. ARM 12. version 1 13. dynamically linked (uses shared libs) 14. not stripped \r\n" 15."5.2 Linux及开发工具的使用\r\nGNU提供的编译工具包括汇编器as、C编译器gcc、C 编译器g 、链接器ld和二进制转换工具objcopy。基于ARM平台的工具分别为arm-linux-as、arm-linux-gcc、arm-linux-g 、arm-linux-ld和arm-linux-objcopy。GNU的所有开发工具都可以从www.gnu.org上下载,基于ARM的工具可以从www.uclinux.org获得。GNU的编译器功能非常强大,共有上百个操作选项,这也是这类工具让初学者头痛的原因。不过,实际开发中只需要用到有限的几个,大部分可以采用默认选项。GNU工具的开发流程如下:编写C、C 语言或汇编源程序,用gcc或g 生成目标文件,编写链接脚本文件,用链接器生成最终目标文件(elf格式),用二进制转换工具生成可下载的二进制代码。\rLinux下的GNU调试工具主要是gdb、gdbserver和kgdb。其中gdb和gdbserver可完成对目标板上Linux应用程序的远程调试。gdbserver是一个很小的应用程序,运行于目标板上,可监控被调试进程的运行,并通过串口与上位机上的gdb通信。开发者可以通过上位机的gdb输入命令,控制目标板上进程的运行,查看内存和寄存器的内容。gdb5.1.1以后的版本加入了对ARM处理器的支持,在初始化时加入-target==arm参数可直接生成基于ARM平台的gdbserver。gdb工具可以从ftp://ftp.gnu.org/pub/gnu/gdb/上下载 \r\n" 16." Linux常用命令 \r\n用户在命令行输入命令后,由外壳进行解释。外壳是一种命令解释器,提供了用户和操作系统之间的交互接口。外壳是面向命令行的,而X Window则是图形界面。外壳解释的命令送往操作系统执行。外壳可以执行Linux的系统内部命令,也可以执行应用程序。用户还可以利用外壳编程,执行复杂的命令程序。\rLinux提供几种外壳程序以供选择。常用的有Bourne外壳、C外壳和Korn外壳。各个外壳都能提供基本的功能,又有其各自的特点。\rBourne外壳是由Steven Bourne编写的,是UNIX的默认外壳。Bourne外壳的外壳编程能力很强,但是不能处理命令的用户交互特征,bash是Bourne外壳的增强版。\rC外壳是由加利福尼亚大学伯克利分校的Bill Joy编写的。能提供Bourne外壳所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。C外壳的编程能力不如Bourne 外壳,但由于它的语法和C语言类似,所以C程序员将发现C外壳很顺手。\rKorn外壳是由Dave Korn编写的。Korn外壳融合了C外壳和Bourne外壳的优点,并与Bourne外壳完全兼容。Korn外壳的效率很高,其命令交互界面和编程交互界面都很不错。\rBash是大多数Linux系统的默认外壳。其克服了Bourne外壳的缺点,又和Bourne外壳完全兼容。 \r\n" 17."1.登录和退出\rLinux启动后,给出login命令,等待用户登录。\rLogin:\rPassword:\r使用logout命令退出外壳。\r2.更改账号密码\r使用passwd命令来设置新用户的口令。在设置口令之后,账号即能正常工作。\r语法:passwd\rOld password:\rNew password:\rRetype new password:\r3.联机帮助\r系统上几乎每条命令都带有相关的Man page。在有困难时,可以立刻找到文件。\r语法:man命令\r例如,如果使用ls命令时遇到困难,可以输入:man ls\r4.远程登录\r用来连接到其他机器执行工作。在Linux上,由于对TCP/IP协议的完全支持,用户可以很容易的从Linux主机连接其他的计算机系统。\r语法:rlogin主机名[-l用户名 -->

嵌入式Linux应用程序开发

" 2."5.1 开发环境的建立

进行项目开发前,首先要做的是搭建一套基于Linux操作系统的应用开发环境,一般由目标板和宿主机所构成。目标板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主机来完成。开发环境对硬件没有特殊的要求,但是为了双方之间建立连接关系,关键的接口包括串口、以太网口和USB口等是必不可少的。

嵌入式Linux的开发环境

传统的嵌入式开发环境需要单片机的仿真器,包含C语言、汇编语言、调试工具等的集成开发环境IDE和实时操作系统等,整个开发系统建立起来至少需要几万元。由于Flash技术的发展,特别是一些CPU可以用JTAG接口下载调试,故仿真器已可以省去。随着标准化的推广,JTAG调试工具变得越来越简单、越来越通用。一些BDM调试工具已经简单到只需在PC机并行口和单片机的JTAG接口之间加一级5V到3.3V的电平转换,这使得自制调试工具变得越来越容易。软件方面,Linux下的自由软件GNU gcc可以完成几乎所有知名CPU,以及DSP的交叉C编译和调试,故可以省去IDE。

个人用Linux开发嵌入式应用程序,可以在自己的PC机上安装一套Linux操作系统,使用Linux中的X Windows打开若干个窗口用于编译、下载、调试等。

如果整个研发小组由多名工程师组成,常采用的办法是:用1台PC机运行Linux作为服务器;开发小组中每个成员都通过局域网用Telnet登录到这台Linux服务器上去;被开发的目标板也挂在网上。在服务器的Linux环境下,各个工程师用GNU gcc编译生成目标代码,再用FTP传回到自己的PC机上,然后通过串行口或网络下载到目标机上。

" 3."利用Cygwin建立模拟环境

" 4."" 5."" 6."" 7."交叉编译环境的建立

交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在宿主机上对即将运行在目标机上的应用程序进行编译,生成可在目标机上运行的代码格式。交叉编译环境是一个由编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要包括针对目标系统的编译器gcc、目标系统的二进制工具binutils、目标系统的标准c库glibc和目标系统的Linux内核头文件。

在建立交叉编译环境之前,首先需要下载包括binutils、gcc、glibc及Linux内核在内的源代码,尽量选用较新版本,glibc和内核源代码的版本必须与目标机上实际使用的版本保持一致,并设定shell变量PREFIX指定可执行程序的安装路径。

(1)编译binutils。

运行configure文件,并使用--prefix=$PREFIX参数指定安装路径,使用--target=arm-linux参数指定目标机类型,然后执行make install。

(2)配置Linux内核头文件。

执行make mrproper进行清理工作,然后执行make config ARCH=arm(或make menuconfig/xconfig ARCH=arm)进行配置。一定要在命令行中使用ARCH=arm指定CPU架构,因为默认架构为主机的CPU架构,这一步需要根据目标机的实际情况进行详细的配置。

配置完成之后,需要将内核头文件拷贝到安装目录:

cp -dR include/asm-arm

$PREFIX/arm-linux/include/asm

cp -dR include/linux

$PREFIX/arm-linux/include/linux

" 8."(3)第一次编译gcc。configure的运行参数设置:

--prefix=$PREFIX

--target=arm-linux

--disable-threads

--disable-shared

--enable-languages=c

执行make install,将生成一个最简单的gcc。由于编译整个gcc是需要目标机的glibc库的,它现在还不存在,因此需要首先生成一个最简单的gcc,它只需要具备编译目标机glibc库的能力即可。

(4)交叉编译glibc。

由于这一步骤生成的代码是针对目标机cpu的,因此它属于一个交叉编译过程。又因为该过程要用到Linux内核头文件,默认路径为$PREFIX/arm-linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一个名为sys-linux的软连接,使其指向内核头文件所在的include目录;也可以在接下来要执行的configure命令中使用--with-headers参数指定linux内核头文件的实际路径。

configure的运行参数设置如下,因为是交叉编译,所以要将编译器变量CC设为arm-linux-gcc:

CC=arm-linux-gcc ./configure

--prefix=$PREFIX/arm-linux

--host=arm-linux

--enable-add-ons

最后,按以上配置执行configure和make install,glibc的交叉编译过程就算完成了,这里需要指出的是,glibc的安装路径设置为$PREFIXARCH=arm/arm-linux,如果此处设置不当,第二次编译gcc时可能找不到glibc的头文件和库。

" 9."(5)第二次编译gcc。

运行configure,参数设置为

--prefix=$PREFIX --target=arm-linux

--enable-languages=c 10.c 。

运行make install。

到此为止整个交叉编译环境就完全生成了。

建立一个交叉编译工具链是一个相当复杂的过程,为了节省时间,网上有一些编译好的可用的交叉编译工具链可以下载。本书所附光盘也带有编译好的交叉编译工具链arm-linux- toolchains.tgz,只需简单地解压缩即可使用:

tar xvzf arm-linux-toolchains.tgz –C /arm9

假设工具链解压缩到目录/arm9。

解压完毕后把工具链目录加入到环境变量PATH中即可。

交叉编译工具做完后,简单验证一下。首先用文字输入软件建立一个helloworld.c文件:

#include 

int main(void)

{

printf(\"hello world\

\");

return 0;

}

然后在命令行执行:

$arm-linux-gcc helloworld.c -o helloworld

$file helloworld

如果输出以下信息,说明成功建立了编译工具。

helloworld: ELF 32-bit LSB executable 11. ARM 12. version 1 13. dynamically linked (uses shared libs) 14. not stripped

" 15."5.2 Linux及开发工具的使用

GNU提供的编译工具包括汇编器as、C编译器gcc、C 编译器g 、链接器ld和二进制转换工具objcopy。基于ARM平台的工具分别为arm-linux-as、arm-linux-gcc、arm-linux-g 、arm-linux-ld和arm-linux-objcopy。GNU的所有开发工具都可以从www.gnu.org上下载,基于ARM的工具可以从www.uclinux.org获得。GNU的编译器功能非常强大,共有上百个操作选项,这也是这类工具让初学者头痛的原因。不过,实际开发中只需要用到有限的几个,大部分可以采用默认选项。GNU工具的开发流程如下:编写C、C 语言或汇编源程序,用gcc或g 生成目标文件,编写链接脚本文件,用链接器生成最终目标文件(elf格式),用二进制转换工具生成可下载的二进制代码。

Linux下的GNU调试工具主要是gdb、gdbserver和kgdb。其中gdb和gdbserver可完成对目标板上Linux应用程序的远程调试。gdbserver是一个很小的应用程序,运行于目标板上,可监控被调试进程的运行,并通过串口与上位机上的gdb通信。开发者可以通过上位机的gdb输入命令,控制目标板上进程的运行,查看内存和寄存器的内容。gdb5.1.1以后的版本加入了对ARM处理器的支持,在初始化时加入-target==arm参数可直接生成基于ARM平台的gdbserver。gdb工具可以从ftp://ftp.gnu.org/pub/gnu/gdb/上下载

" 16." Linux常用命令

用户在命令行输入命令后,由外壳进行解释。外壳是一种命令解释器,提供了用户和操作系统之间的交互接口。外壳是面向命令行的,而X Window则是图形界面。外壳解释的命令送往操作系统执行。外壳可以执行Linux的系统内部命令,也可以执行应用程序。用户还可以利用外壳编程,执行复杂的命令程序。

Linux提供几种外壳程序以供选择。常用的有Bourne外壳、C外壳和Korn外壳。各个外壳都能提供基本的功能,又有其各自的特点。

Bourne外壳是由Steven Bourne编写的,是UNIX的默认外壳。Bourne外壳的外壳编程能力很强,但是不能处理命令的用户交互特征,bash是Bourne外壳的增强版。

C外壳是由加利福尼亚大学伯克利分校的Bill Joy编写的。能提供Bourne外壳所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。C外壳的编程能力不如Bourne 外壳,但由于它的语法和C语言类似,所以C程序员将发现C外壳很顺手。

Korn外壳是由Dave Korn编写的。Korn外壳融合了C外壳和Bourne外壳的优点,并与Bourne外壳完全兼容。Korn外壳的效率很高,其命令交互界面和编程交互界面都很不错。

Bash是大多数Linux系统的默认外壳。其克服了Bourne外壳的缺点,又和Bourne外壳完全兼容。

" 17."1.登录和退出

Linux启动后,给出login命令,等待用户登录。

Login:

Password:

使用logout命令退出外壳。

2.更改账号密码

使用passwd命令来设置新用户的口令。在设置口令之后,账号即能正常工作。

语法:passwd

Old password:

New password:

Retype new password:

3.联机帮助

系统上几乎每条命令都带有相关的Man page。在有困难时,可以立刻找到文件。

语法:man命令

例如,如果使用ls命令时遇到困难,可以输入:man ls

4.远程登录

用来连接到其他机器执行工作。在Linux上,由于对TCP/IP协议的完全支持,用户可以很容易的从Linux主机连接其他的计算机系统。

语法:rlogin主机名[-l用户名

-->

1."第5章 嵌入式Linux应用程序开发

" 2."5.1 开发环境的建立

进行项目开发前,首先要做的是搭建一套基于Linux操作系统的应用开发环境,一般由目标板和宿主机所构成。目标板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主机来完成。开发环境对硬件没有特殊的要求,但是为了双方之间建立连接关系,关键的接口包括串口、以太网口和USB口等是必不可少的。

嵌入式Linux的开发环境

传统的嵌入式开发环境需要单片机的仿真器,包含C语言、汇编语言、调试工具等的集成开发环境IDE和实时操作系统等,整个开发系统建立起来至少需要几万元。由于Flash技术的发展,特别是一些CPU可以用JTAG接口下载调试,故仿真器已可以省去。随着标准化的推广,JTAG调试工具变得越来越简单、越来越通用。一些BDM调试工具已经简单到只需在PC机并行口和单片机的JTAG接口之间加一级5V到3.3V的电平转换,这使得自制调试工具变得越来越容易。软件方面,Linux下的自由软件GNU gcc可以完成几乎所有知名CPU,以及DSP的交叉C编译和调试,故可以省去IDE。

个人用Linux开发嵌入式应用程序,可以在自己的PC机上安装一套Linux操作系统,使用Linux中的X Windows打开若干个窗口用于编译、下载、调试等。

如果整个研发小组由多名工程师组成,常采用的办法是:用1台PC机运行Linux作为服务器;开发小组中每个成员都通过局域网用Telnet登录到这台Linux服务器上去;被开发的目标板也挂在网上。在服务器的Linux环境下,各个工程师用GNU gcc编译生成目标代码,再用FTP传回到自己的PC机上,然后通过串行口或网络下载到目标机上。

" 3."利用Cygwin建立模拟环境

" 4."" 5."" 6."" 7."交叉编译环境的建立

交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在宿主机上对即将运行在目标机上的应用程序进行编译,生成可在目标机上运行的代码格式。交叉编译环境是一个由编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要包括针对目标系统的编译器gcc、目标系统的二进制工具binutils、目标系统的标准c库glibc和目标系统的Linux内核头文件。

在建立交叉编译环境之前,首先需要下载包括binutils、gcc、glibc及Linux内核在内的源代码,尽量选用较新版本,glibc和内核源代码的版本必须与目标机上实际使用的版本保持一致,并设定shell变量PREFIX指定可执行程序的安装路径。

(1)编译binutils。

运行configure文件,并使用--prefix=$PREFIX参数指定安装路径,使用--target=arm-linux参数指定目标机类型,然后执行make install。

(2)配置Linux内核头文件。

执行make mrproper进行清理工作,然后执行make config ARCH=arm(或make menuconfig/xconfig ARCH=arm)进行配置。一定要在命令行中使用ARCH=arm指定CPU架构,因为默认架构为主机的CPU架构,这一步需要根据目标机的实际情况进行详细的配置。

配置完成之后,需要将内核头文件拷贝到安装目录:

cp -dR include/asm-arm

$PREFIX/arm-linux/include/asm

cp -dR include/linux

$PREFIX/arm-linux/include/linux

" 8."(3)第一次编译gcc。configure的运行参数设置:

--prefix=$PREFIX

--target=arm-linux

--disable-threads

--disable-shared

--enable-languages=c

执行make install,将生成一个最简单的gcc。由于编译整个gcc是需要目标机的glibc库的,它现在还不存在,因此需要首先生成一个最简单的gcc,它只需要具备编译目标机glibc库的能力即可。

(4)交叉编译glibc。

由于这一步骤生成的代码是针对目标机cpu的,因此它属于一个交叉编译过程。又因为该过程要用到Linux内核头文件,默认路径为$PREFIX/arm-linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一个名为sys-linux的软连接,使其指向内核头文件所在的include目录;也可以在接下来要执行的configure命令中使用--with-headers参数指定linux内核头文件的实际路径。

configure的运行参数设置如下,因为是交叉编译,所以要将编译器变量CC设为arm-linux-gcc:

CC=arm-linux-gcc ./configure

--prefix=$PREFIX/arm-linux

--host=arm-linux

--enable-add-ons

最后,按以上配置执行configure和make install,glibc的交叉编译过程就算完成了,这里需要指出的是,glibc的安装路径设置为$PREFIXARCH=arm/arm-linux,如果此处设置不当,第二次编译gcc时可能找不到glibc的头文件和库。

" 9."(5)第二次编译gcc。

运行configure,参数设置为

--prefix=$PREFIX --target=arm-linux

--enable-languages=c 10.c 。

运行make install。

到此为止整个交叉编译环境就完全生成了。

建立一个交叉编译工具链是一个相当复杂的过程,为了节省时间,网上有一些编译好的可用的交叉编译工具链可以下载。本书所附光盘也带有编译好的交叉编译工具链arm-linux- toolchains.tgz,只需简单地解压缩即可使用:

tar xvzf arm-linux-toolchains.tgz –C /arm9

假设工具链解压缩到目录/arm9。

解压完毕后把工具链目录加入到环境变量PATH中即可。

交叉编译工具做完后,简单验证一下。首先用文字输入软件建立一个helloworld.c文件:

#include 

int main(void)

{

printf(\"hello world\

\");

return 0;

}

然后在命令行执行:

$arm-linux-gcc helloworld.c -o helloworld

$file helloworld

如果输出以下信息,说明成功建立了编译工具。

helloworld: ELF 32-bit LSB executable 11. ARM 12. version 1 13. dynamically linked (uses shared libs) 14. not stripped

" 15."5.2 Linux及开发工具的使用

GNU提供的编译工具包括汇编器as、C编译器gcc、C 编译器g 、链接器ld和二进制转换工具objcopy。基于ARM平台的工具分别为arm-linux-as、arm-linux-gcc、arm-linux-g 、arm-linux-ld和arm-linux-objcopy。GNU的所有开发工具都可以从www.gnu.org上下载,基于ARM的工具可以从www.uclinux.org获得。GNU的编译器功能非常强大,共有上百个操作选项,这也是这类工具让初学者头痛的原因。不过,实际开发中只需要用到有限的几个,大部分可以采用默认选项。GNU工具的开发流程如下:编写C、C 语言或汇编源程序,用gcc或g 生成目标文件,编写链接脚本文件,用链接器生成最终目标文件(elf格式),用二进制转换工具生成可下载的二进制代码。

Linux下的GNU调试工具主要是gdb、gdbserver和kgdb。其中gdb和gdbserver可完成对目标板上Linux应用程序的远程调试。gdbserver是一个很小的应用程序,运行于目标板上,可监控被调试进程的运行,并通过串口与上位机上的gdb通信。开发者可以通过上位机的gdb输入命令,控制目标板上进程的运行,查看内存和寄存器的内容。gdb5.1.1以后的版本加入了对ARM处理器的支持,在初始化时加入-target==arm参数可直接生成基于ARM平台的gdbserver。gdb工具可以从ftp://ftp.gnu.org/pub/gnu/gdb/上下载

" 16." Linux常用命令

用户在命令行输入命令后,由外壳进行解释。外壳是一种命令解释器,提供了用户和操作系统之间的交互接口。外壳是面向命令行的,而X Window则是图形界面。外壳解释的命令送往操作系统执行。外壳可以执行Linux的系统内部命令,也可以执行应用程序。用户还可以利用外壳编程,执行复杂的命令程序。

Linux提供几种外壳程序以供选择。常用的有Bourne外壳、C外壳和Korn外壳。各个外壳都能提供基本的功能,又有其各自的特点。

Bourne外壳是由Steven Bourne编写的,是UNIX的默认外壳。Bourne外壳的外壳编程能力很强,但是不能处理命令的用户交互特征,bash是Bourne外壳的增强版。

C外壳是由加利福尼亚大学伯克利分校的Bill Joy编写的。能提供Bourne外壳所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。C外壳的编程能力不如Bourne 外壳,但由于它的语法和C语言类似,所以C程序员将发现C外壳很顺手。

Korn外壳是由Dave Korn编写的。Korn外壳融合了C外壳和Bourne外壳的优点,并与Bourne外壳完全兼容。Korn外壳的效率很高,其命令交互界面和编程交互界面都很不错。

Bash是大多数Linux系统的默认外壳。其克服了Bourne外壳的缺点,又和Bourne外壳完全兼容。

" 17."1.登录和退出

Linux启动后,给出login命令,等待用户登录。

Login:

Password:

使用logout命令退出外壳。

2.更改账号密码

使用passwd命令来设置新用户的口令。在设置口令之后,账号即能正常工作。

语法:passwd

Old password:

New password:

Retype new password:

3.联机帮助

系统上几乎每条命令都带有相关的Man page。在有困难时,可以立刻找到文件。

语法:man命令

例如,如果使用ls命令时遇到困难,可以输入:man ls

4.远程登录

用来连接到其他机器执行工作。在Linux上,由于对TCP/IP协议的完全支持,用户可以很容易的从Linux主机连接其他的计算机系统。

语法:rlogin主机名[-l用户名

查看更多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值