创建嵌入式系统开发环境_第1页
创建嵌入式系统开发环境_第2页
创建嵌入式系统开发环境_第3页
创建嵌入式系统开发环境_第4页
创建嵌入式系统开发环境_第5页
已阅读5页,还剩188页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

创建系统开发环境漳州师范学院物理系王灵芝本章主要内容1、Linux与

Linux概述2、Linux文件系统结构3、Linux常用命令4、Linux常用工具5、Linux编译器gcc及编译工具6、交叉编译工具的创建1、Linux操作系统的组成2、Linux操作系统的内核版本3、

LinuxLinux与Linux概述Linux简介作者:Linux

Torvalds

·1991年9月发布Linux0.01版本:版版本为Ubuntu

13.101.

Fedora

Core2.

Debian3.Mandrake4.Ubuntu:目前5.

Red

Hat

Linux6.

SuSE7.

Linux

MintLinux操作系统的组成LINUX的内核LINUXSLINUX文件系统LINUX应用系统Linux操作系统的组成LINUX的内核:含有设备驱动程序、系统服务等程序,具有中断处理、进程调度、原语管理等功能。LINUX

S

:S

是系统的用户界面,它是一个命令解释器,它解释用户输入

令,并且把它们送到内核。提供了用户与内核进行交互操作的一种接口。LINUX文件系统:

是文件存放在磁盘等 设备上的组织方法。Linux能支持多种目前许多的文件系统,如EXT2、EXT3、FAT、VFAT、ISO9660、NFS、SMB等。LINUX应用系统:标准的Linux系统都有一整套称为应用程序的程序集,包括文本编辑器、编程语言、XWindow、办公套件、Internet工具、数据库等。Linux内核采树结构:一棵树是稳定树,主要用于;另一棵树是非稳定树或开发树,用于产品开发、改进、测试。源代码版本序号形式:为x.y.zz结构,其中x为主版本号,代表 的改动升级;y为次版本号,表示功能性的改动;zz为末版本号,表示BUG的改动。其中x介于0到9之间,yy和zz则介于0到99之间。双树区分:对于稳定树来说,y是偶数;对于开发树来说,y是比相应稳定树大1的奇数。例2.4.18等为稳定内核版本。Linux的内核版本Linux操作系统概述一、

Linux操作系统Linux是按照 操作系统的要求而设计的一种小型操作系统。由一个内核及一些根据需要进行定制的系统模块组成。其kernel很小,一般只有几百kB左右。即使加上其它必须的模块和应用程序,所需的 空间也很小。它具有多任务、多进程的系统特征,有些还具有实时性

。Linux需要移植:对于

Linux,一般都不是原封不动地使用, 考虑各种具体系统的特点,有针对性地对Linux内核加以裁减、修改和补充。下面是Linux

的基本示意图:BootLoader内核初始化设备驱动程序文件系统网络模块Boot

LoaderBoot

Loader:负责Linux

内核的启动,它用于初始化系统资源,关闭看门狗,改变系统时钟,初始化的代码 到内存中去。如果它能到内存中去运行,就把她成为Boot器,将将操作系统

Loader

。简单的说,Boot

Loader就是这么一段程序,它在系统上电时开始执行,初始化硬件设备,准备好软件环境,最好调用操作系统的内核。设备驱动设备驱动:设备驱动占据了Linux

内核很大部分。同其它操作系样,设备驱动为它们所控制的硬件设备和操作系统提供接口。设备驱动包括:字符型设备驱动,块设备驱动,网络设备驱动文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于文件的磁盘或分区,或文件系统种类。文件系统:Linux

最重要的特性之一就是对多种文件系统的支持。如EXT2、EXT3、FAT、VFAT、ISO9660、NFS、SMB.这种特性使得Linux很容易地同其它操作系统共存。文件系统的概念使得用户能够查看设备上的文件和路径而无须考虑实际物理设备的文件系统类型。Linux

透明的支持许多不同的文件系统,将各种安装的文件和文件系统以一个完整的虚拟文件系统的形式呈现给用户。文件系统类型:文件ext2

:早期linux中常用的文件系统ext3

:ext2的升级版,带日志功能RAMFS

:内存文件系统,速度很快

NFS:网络文件系统,由SUN发明,主要用于共享MS-DOS

:MS-DOS文件系统VFAT

:Windows

95/98

操作系统采用的文件系统FAT

:Windows

XP

操作系统采用的文件系统NTFS

:Windows

NT/XP

操作系统采用的文件系统

swap:用于linux的交换分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用。ISO9660

:大部分光盘所采用的文件系统

CRAMFS文件系统:是专门针对闪存设计的只读压缩的文件系统,其容量上限为256M,采用zlib压缩,文件系统类型可以是EXT2或EXT3.YAFFS(YetAnotherFlash

File

System)是第一个专门为NAND

Flash

器设计的

文件系统,适用于大容量的

设备;并且是在GPL(General

Public

License)协议下发布的,可在其

免费获得源代码。Linux结构Linux与DOS文件系统区别Linux文件系统是一个 树结构,最上层是根 ,其他的所有的。/sbin

/usr

/etcDos文件系统也采用/root

/lib

/hom

/mnt树的结构,但DOS以都是从根 出发而生成/每个分区为树根,有几个分区就有几个树型结构。C

D

ELinux下,任何一个

都可以是一个分区。因此,在分区时,必须将一个分区安装在树根下面。Linux不仅将分区安装为一个 ,而且还将所有的硬件设备都安装成一个个设备文件。对设备的操作是通过文件的操作完成的。Linux下常用 令、工具系统启动时要用到的程序、系 引导配置启所有的设备文件。但不文件设系统管理时要用到的各而种配 件和子用户主 ,用户非标准 ,内空,但系统管理员的系统管理程序的程序使用的库文件保d

与fl

两个方

/

/

/

/bi一个虚拟的文件系统,可用来包含许多被/bin/和/sbin/大多数情况下是空的,用来超级用户(管理员)的

目外部设备的挂接点,通常用通常用来安装各种

地系统运行时的各种临时文件Linux文件系统结构“/”根

:包含基本的操作系统和

工具。这个的文件可以启动系统,并且需要的话,可以完成紧急“/root”和修复的功能。:系统管理员(也叫超级用户或根用户)的Home

。“/usr”

:包含所有

令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个

也包含你的Linux

版本的主要的应用程序。/usr/bin,/bin:一般性执行程序放置的地方/usr/sbin,/sbin:系统管理员常用的指令集“/home”

:包含用户的文件:参数设置文件、个性化文件、文档、数据、

、缓存数据等。这个

在系统升级时应该保留。“/mnt”:一般用来临时挂载别的文件系统,如FAT32,NTFS等。在这个文件夹

通常用来设置共享文件夹。“/bin”:系统启动时需要的执行文件(二进制),这些文件可以被普通用户使用。“/sbin”:系统执行文件(二进制),这些文件不打算被普通用户使用。(普通用户仍然可以使用它们,但要指定。)“/etc”

:操作系统的配置文件

。/etc/rc.d/init.d:系统开机的时候载入的服务程序的scripts

的放置点“/dev”:设备文件。LINUX下设备被当成文件,正常情况下,设备会有一个独立的子。这些设备的内容会出现在独立的子下。比如:/dev/usb1;/dev/tty0; /dev/console

等等“/lib”库。“/var”:根文件系统 下程序和 模块的共享:存放在操作中被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等“/boot”

:用于启动加载程序的文件。当计算机启动时,这些文件首先被装载。这个也会包含Linux核(压缩文件

vmlinuz)。用于启动加载程序(LILO或GRUB)“/opt”

:可选的应用程序。譬如,REDHAT5.2下的KDE

(REDHAT

6.0下,KDE放在其它的X-WINDOWS应用程序中,主执行程序在/usr/bin下)“/tmp”

临时文件。该

会被自动清理干净。“/lost+found”件。:在文件系统修复时恢复的文Linux的文件类型文件名Linux文件的名字可以由字母字符、下划线和数字组成,也可以加上

和逗号。文件名的第一个字符不能是数字,短划线、句点和星号等被系统用作特殊符号的其他符号。用“.”开始的文件为隐藏文件,称为“点文件”。可用指令“file

文件名”来查看文件类型。例如:#file

/bin/bin:

directory文件类型:、压缩的和归档的文件.bz2

—使用bzip2

方式压缩的文件.gz

—使用gzip方式压缩的文件.tar

—使用tar方式(tape

archive,磁带归档的简写)压缩的文件,又称

tar

文件.tbz

—用tar

和bzip

压缩的文件.tgz

—用tar

和gzip

压缩的文件.zip—使用ZIP

压缩的文件,在

MS-DOS

应用程序中常见。多数为Linux

压缩的文件使用gzip

压缩,因此Linux

文件中的.zip归档较少见。(2)、文件格式.au—音频文件.gif—GIF

图像文件.html/.htm—HTML

文件.jpg—JPEG

图像文件.pdf—文档的电子映像;PDF

代表PortableFormat(可移植文档格式).png—PNG

图像文件(Portable

NetworkGraphic

的简写,可移植网络图形).ps—PostScript

文件,为打印而格式化过的文件.txt—纯ASCII

文本文件.wav—音频文件.xpm—图像文件(3)、系统文件..conf

—一种配置文件。配置文件有时也使用.cfg。.lock—锁(lock)文件;用来判定程序或设备是否正在被使用.rpm

Red

Hat

用来安装

包管理器文件(4)、编程和

文件.c—C程序语言的源码文件.cpp—C++程序语言的源码文件.h—C

或C++程序语言的头文件.o—程序的对象文件.pl

Perl.py

—Python.so—库文件.sh

s.tcl

TCL常用的Linux文件系统Linux系统

支持十多种文件系统类型:

ext、ext2、ext3、CRAMFS、msdos、umsdos、Vfat、NTFS等。minix

linux:最早使用的文件系统ext2

linux和ext3

linux:目前常用的文件系统nfs:网络文件系统cramfs:只读文件系统主要内容1、Linux外壳s2、Linux常用命令Linux常用命令Linux外壳的功能:

s

是一种命令解释器,提供了用户和操作系统之间的交互接口。对用户输入

令,由外壳进行解释,然后将解释

令送到操作系统去执行。

s

可以执行Linux的系统命令,也可以执行应用程序。用户还可以利用外壳编程,执行复杂令程序。Linux有多种s

,为用户提供选择。Linux外壳s常用的s

:p71bash、ash、csh、ksh、tcsh等。bash是Linux默认使用的s

,它由Brian

Fox

和Chet

Ramey共同完成的。bash是Bourne

Again

S的缩写, 命令有40个。Bash有如下特点:1)使用方向键查阅已使用过

令行。2)补全命令行,按Tab键。3)可以使用通配符“?”、“*”。

4)有管道命令“|”,用“|”可将多个命令连接起来执行,前面命令的输出是后者的输入。1、ls---文件及子

名列表语法格式:ls

[option]

[file]如:ls

以默认方式显示当前下的子和文件。ls

–a

显示所有文件,包括隐藏文件。ls

–l

以默认方式显示文件属性,包括大小、日期、所有者、权限及名称。ls–F

以默认方式显示文件及类型,以“/”结尾的为,以“*”结尾的为可执行文件,以“@”结尾的为符号。Linux常用命令属性文件数量所有者文件属性符号格式:arwxrwxrwx

n

owner

group

size

date

name例如:drwxr-xr-x

2root

root4096

2008-3-3

bina:文件性质,可以是:n:对文件指硬连接数对 指含的子

数d:

文件;l:

符号 文件;b:

块类型设备文件;c:

字符型设备文件。r:

read,读w:

write,写x:

execute,执行红色:文件拥有者权限黑色:文件组拥有者权限蓝色:其他用户的权限od更改 权限

od用于改变文件或的权限。用户用它控制文件或的权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。1.文字设定法语法:

od

[who]

[+

|

-

|

=]

[mode]

文件名例如:

od

g+r,o+r

example操作对象who

下述字母中的任一个或者它们的组合:u

表示“用户(user)”,即文件或 的所有者。g

表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。o

表示“其他(others)用户”。a

表示“所有(all)用户”。它是系统默认值。操作符号可以是:

+

:添加某个权限。

-

:取消某个权限。

=

:赋予给定权限并取消其他所

限设置mode所表示的权限可用下述字母的任意组合:r

可读、w

可写、x

可执行……(其他省略)语法:

od

[who]

[+|

-

|

=][mode]

文件名文件名:以空格分开的要改变权限的文件列表,支持通配符。在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:

od

g+r,o+r

example%使同组和其他用户对文件example

有读权限。2.

od数字设定法须首先了解用数字表示的属性的含义:0表示没限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。数字设定法的一般形式为:语法:

od

[mode]

文件名比如

od777

example;%表示用户\同组用户\其他用户对文件example具有可读\可写\执行的权限比如

od755example;%表示用户对文件example具有可读\可写\执行的权限,同组用户\其他用户只具有执行和可读的权限3、cd---改变工作语法格式:cd[directory]如:(

切换)切换到根cd

dir

切换到当前 下的dir

。。切换到上一级

。切换到当前 下的某下的abc

。cd

/cd

..cd

~/abc几个符号“.”:本级:

“/”:根;

“..”:4、cp---

文件和语法格式:cp

[源文件及路径]

[目标文件及路径]cp

-r

源 目标如:cpfile1

file2

将文件file1cp/root/file

.

将/root成file2。下的文件file到当前

下,名字仍为file

。filecp

file到/usr/usr

将当前 下的文件下,名字仍为file

。录,全部cp

–r

dir1

dir2

将dir1下的文件和目到dir2

下。5、rm---删除文件语法格式:rm[filename]如:删除当前删除当前删除当前rmfile1rm

*.crmabc.*文件。rm

*删除当前下的file1文件下的所有c文件下主文件名为abc的所有下的所有文件6、mv---移动或更改文件、

名语法格式:mv

源地址

目标地址如:mv file1

file2

将文件file1更改为file2

mv file1

dir2

将文件file1移动到

dir2下,文件名仍为file1。mv dir1

dir2

dir1更改为dir2。7、建立语法格式:mkdir

[option]

名如:mkdir dir1

在当前 下建立新

dir1。mkdir

dir1/dir2

在当前 下的dir1

下建立新

dir2。mkdir -pdir3/dir4

在当前dir3

,然后在dir3下建立新下先建立新dir4。8、删除名名语法格式:rmdirrm

–r如:rmdir

dir1

删除rm–r

dir2删除dir1(dir1下必须为空)。dir2及其子

下所有文件。2、查看文件内容命令1)cat---连续显示格式:cat

filename如:catfile1cat

file2

|

more以连续方式显示file1内容以分页方式显示file2内容2)more---分页显示格式:more

filename按空格查看下一页,按回车下一行。3)less---分页并且可往回查看格式:less

filename按“空格”查看下一页;按“b”查看上一页;按“回车”下一行;按“q”键退出。10、ln---文件硬

:只针对文件而言语法格式:ln

源文件名及路径

目标文件名及路径如:ln

file1

dir2/file2

将当前

下file1,

到当前

下的dir2下,名为file2ln

dir3/file3file4

将当前

下的dir3

下的file3,

到当前

下,名为file4删除方法:用rm命令(2)符号(相当于Win2k的快捷方式)语法格式:ln

–s

源文件名及路径

目标文件名及路径如:ln

-s

file1

dir2/file2

将当前到当前 下的dir2下的文件file1,下,文件名为file2。ln–s dir3/file3

file4

将当前 下dir3

下的文件file3, 到当前 下,文件名为file4。删除方法:用rm命令11.grep:列出含有某个字符串的文件格式:grep[options]pattern

[file]例如:(1)在内核 下查找包含“request_irq”文件#

cd/mnt/hgfs/fs2410_2.6.8#grep

“request_irq”

*

-R*表示在当前

下查找,-R表示递归查找所有的子#grep

“request_irq”

kernel

-R12.find:列出满足某种条件的文件格式:

find

[-H][-L][-P][path][expression]例如:(1)在内核

下查找包含“request_irq”文件#cd

/mnt/hgfs/fs2410_2.6.8#find -name

“*fb*”*表示在当前

下查找文件包含“fb”的字样11、tar---压缩与解压语法格式:tar

-参数(必选)+参数(可选)

目标文件

(.tar

.gz)

源文件/主选项c

创建 文件r

追加文件到创建好的 文件末尾文件,如果有则覆盖,没有则追加末尾文件t

列出 文件包含的文件u

更新x辅助选项b

磁带机

块大小20(20*512bytes)f

必须选项k

压缩/解压缩过程中保存同名文件m

还原文件时,修改文件时间为当前时间M

创建多卷文件v

显示处理信息w

每一步都要求确认z

用gzip压缩/解压缩文件11、tar---压缩与解压(1)压缩文件语法格式:tar cfzv

目标文件路径

被压缩的如:tar

cfzv

dir1/file1.tgz将当前 下的dir2为文件file.tgz,存放在当前dir2下的所有文件,压缩下的dir1

下。说明:选项4个字母cfzv,不分次序。(2)解压文件tarxfzv

被解压的文件路径

保存的tar

xfzv

file.tgz

dir1下的dir1将文件file.tgz解压,保存到当前下。说明:选项4个字母xfzv,不分次序实例#tar

-cf

mydir.tar

mydir#将mydir

下所有文件打包到mydir.tar#tar-uf

mydir.tar

mydir#更新mydir.tar#tar

-tf

mydir.tar#显示mydir.tar内的文件#tar

-cf

/dev/fd0

mydir#用设备名称作

名#tar

-xf

/dev/fd0#恢复软盘中的文件fdisk-l

查看U盘标识符root@ubuntu:/#

fdisk

-lDisk

/dev/sda:

42.9

GB,

42949672960

bytesDevice

Boot

Start

End

BlocksId

System/dev/sda1

*2048

81788927

40893440 83

Linux/dev/sda2817909748388403110465295

Extended/dev/sda58179097683884031104652882

Linux

swap

/

SolarisDisk

/dev/sdb:15.9

GB,bytes1

heads,

1

sectors/track,

30965760

cylinders,

total

30965760

sectorsUnits

=

sectors

of

1

*

512

=

512

bytesSector

size

(logical/physical):

512

bytes/

512

bytes12、磁盘、

挂接与卸载(1)mount---挂接语法格式:mount

[option]

被挂接的设备 挂接点挂接点mount

IP地址:被挂接的

option:文件类型:二进制、文本、可执行等如:mount-t

yaffs

/dev/mtdblock0

/mnt把/dev/mtdblock0

装载到/mntmount

-t

nfs

:/friendly-arm/root

/mnt将nfs

服务的共享

/friendly-arm/root

挂接到/mnt(2)umount---卸载语法格式:umount

被挂接或挂接点挂载文件系统将一个文件系统的顶层 挂到另一个文件系统的子上,使它们成为一个整体,称为挂载。把该子目录称为挂载点。当一个机器上装了多个操作系统,比如在Linux工作时需

Windows下的C盘,则需要在Linux上挂载采用mount命令挂载,umount命令卸载。为避免每次系统启动时都挂接,可写入相应命令到/etc/fstab。YAFFS(Yet

Another

Flash

File

System)是第一个专门为NAND

Flash统,适用于大容量的器设计的

文件系设备;NFS是Network

FileSystem的简写,即网络文件系统.

网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS.NFS允许一个系统在网络和文件。通过使用NFS,用户本地文件一样

远端系统上上与他人共享和程序可以像的文件。,新建所挂接分区对应

,例加挂FAT32系统首先进入/mntwinDmount

–t

vfat

–o

iocharset=cp936

/dev/hda2

/mnt/winD其中,hda2为D盘对应的设备文件,可通过“fdisk-l”命令或“系统工具/硬件浏览器”中查看各盘对应的设备文件。加挂ntfs系统-

fs加挂U盘上的文件系统mount

–t

vfat

–o

iocharset=cp936

/dev/sda1

/mnt/udiskpwd(print

working

directory)功能说明:显示工作

。语

法:pwd

[--help][--version]补充说明:执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。参

数:--help

。--version

显示版本信息。例子:/root#

pwd

(回车)/root#

/rootexport功能说明:设置或显示环境变量。例子:

/root# export

lib_dir=/usr/lib/bin语

法:export

[-fnp][变量名称]=[变量设置值]补充说明:在s

中执行程序时,s

会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该s

内有效。参

数:-f

代表[变量名称]中为函数名称。-n

删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。-p

列出所有的s

赋予程序的环境变量。12、s应用手册---man对于Linux

令,随时可以使用随机所带的应用手册获得帮助。获得帮助方法:man

命令名如:man

cp13、Linux应用程序的帮助---help对于Linux的应用程序,可以使用各个应用的帮助功能---help,获得帮助。获得帮助方法:应用程序名

--help如:gcc

--helpLinux命令大全/3.2 Windows下的Linux环境

---Cygwin主要内容1、Cygwin2、Cygwin3、Cygwin功能安装3.2.1

Cygwin

功能Cygwin是一个在Windows平台上运行的、模拟Linux环境

,并且该

也将GNU工具移植到了Win32系统上。可以将Cygwin理解成一个DLL.安装了Cygwin后,启动Cygwin,Windows系统就模拟出一部Linux主机,用户便可像在纯Linux下一样使用Linux及其各种工具 、应用 等。工具包括Bash

s

等常用工具.该 对于刚开始使用Linux的人来说,是极好的选择,结构,也删除文件、用户可以方便地回到Windows下查看文件和可以在Windows下进行各种文件操作,如

移动文件、解压文件、查找文件等。3.2.2

CygwinCygwin是Cygwin

solutions公司开发的 ,可以到公司

上免费

,包括Cygwin和各种开发工具的源代码程序。Cygwin

solutions公司的 是:http://

在网页上单击“Install

Cygwin

Now”,会先 一个叫做setup.exe的安装程序,运行Cygwin

下的“setup.exe”,会出现一个 安装的界面.有三项:“Intall

from

Internet”、“Download

withoutIntalling”、“Intall

fromLocalDirectory”,一般应选择第二项,先 ,再安装,不进行直接安装。有三项:“Intall

from

Internet”、“DownloadwithoutIntalling”、“Intall

from

Local

Directory”,一般应选择第二项,先 ,再安装,不进行直接安装。1、启动安装再次运行Cygwin

下的“setup.exe”,选择第三项“Intall

from

LocalDirectory”,进行本地安装。P613.2.3

Cygwin

安装2、选择安装、使用范围当出现如下界面时,(1)需要选择安装

,一般不安装在C盘,注意磁盘空间应不少于2GB;(2)选择使用范围

和文本文件类型,选择默认项:“All

Users”、“Unix”

即可。3、选择安装

包每种 包有“Default”、“Install”、“Reinstall”、“Uninstall”4种安装选择,可以根据需要逐一选择。一般可以做如下选择:选择All为“Default”对如下 包选择“Install”:基本服务工具

Archive:

压缩、解压工具Admin:Base:Net:Shall:基本的Linux工具网络工具

外壳工具集Libs:

系统库文件Untils:

实用工具Editor: 编辑器集3.4交叉编译预备知识1)交叉编译器概述交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。注意这里的平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating

System)。同一

系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说, 常说的x86

Linux平台实际上是In

x86体系结构和Linux

for

x86操作系统的统称;而x86

WinNT平台实际上是In x86

体系结构和Windows

NT

for

x86

操作系统的简称。1、采用交叉编译的主要原因:多数

目标机不能提供足够的资源供编译过程使用,因而只好将编译工作转移到高性能的宿主机中进行。2、编译环境:即创建交叉编译工具的编译环境是一个由编译器、连接器和解释器组成的综合开发环境。3、交叉编译工具(链):交叉编译工具(链)主要包括针对目标系统的编译器gcc、目标系统的二进制工具binutils、目标系统的标准c库glibc和目标系统的Linux

内核头文件。3.4交叉编译预备知识3.4交叉编译预备知识

接下来所要使用的是ARM-Linux2.6平台,说明

的体系结构是ARM,而操作系统为Linux2.6而对应的目标 有MIPS,SuperH、POWERPC等而所涉及到的目标硬件S3C2410而言,之所以使用交叉编译是因为在该硬件上无法安装 所需的编译器,只好借助于宿主机(PC机),在宿主机(PC机)上对即将运行在目标机上的应用程序进行编译,生成可在目标机上运行的代码格式。宿主机一般是一个基于X86架构的计算机, 统称为i386平台。GNU

工具简介下面介绍在

系统开发中用得最多的GNU

开发工具。GNU

开发工具包括C

编译器GCC,C++编译器G++,汇编器AS,

器LD,二进制转换工具(OBJCOPY,OBJDUMP),调试工具(GDB,GDBSERVER,KGDB)和基于不同硬件平台的开发库。在GNUGCC支持下用户可以使用流行的C/C++语言开发应用程序,满足生成高效率运行代码、易掌握的编程语言的用户需求。这些工具都是按GPL

发布,任何人可以从网上获取全部的源代码,无需使用任何费用。关于GNU

和公的介共 证协议的详细资料,

读者可以参看GNU绍,。运行于Linux

操作系统下的

GNU

gcc

编译器,不仅可以编译Linux

操作系统下运行的应用程序,还可以编译Linux

内核本身。甚至可以作交叉编译,编译运行于其它CPU上的程序。在这里 用的是arm-linux-工具链。如arm-linux-gcc和arm-linux-g++主要内容1、vim概述2、vim的启动3、vim的工作模式Linux文本编辑器vimvim概述p69vim是Linux的全屏幕编辑器,是vi

(Visual

interface)的增强型版本,用它可以进行文本文件的编辑、数据文件(1)vim

回车启动vim,并且打开一个新文件。编辑,也用它做源程序的编辑。类似于Windows/DOS下的EDIT编辑器。Vim可以执行输出、删除、查找、替换、块操作等众多文本操作。Vim的启动有两种方法:(2)vim

file

回车启动vim,并且打开file文件,如果file不存在,则创建file文件。vim的工作模式vim有三种工作模式:命令行模式、文本输入模式、末行模式。一、命令行模式1、命令行模式的功能就是vim认为从键盘输入的是命令,完成各种编辑操作。注意:(1)在该模式下,从键盘所有输入令,都不在屏幕上显示出来;(2)如果输入的不是合法命令则响铃。二、文本输入模式输入

命令’I’后,进入文本输入模式,在该模式下从键盘输入的均作为编辑的内容。按ESC返回。三、末行命令模式按下

“:”符号后进入,输入 令在末行显示,按回车执行命令。二、文本输入模式在该模式下从键盘输入的均作为编辑的内容。文本输入模式进入方法使用所有的“增加文本命令”和“改变和替换命令”后,均切换到文本输入模式。最常用的是“a命令”和“i命令”:a

:在光标位置后增加文本i

:在光标位置前增加文本三、末行命令模式令在末行显示,在屏幕的末行有“:”符号,输入按回车执行命令。1、进入末行命令模式的方法在命令模式下按“:”键,便进入末行命令模式。2、退出末行模式的方法一个末行命令执行完后,便自动回到命令行模式。3、末行模式的功能与命令功能有二:保存文件、退出编辑器。末行模式 令如下:保存和写文件命令:w

将缓冲区的内容写到文件:w

文件名 将缓冲区的内容写到指定文件:w!文件名强制覆盖写已经存在的文件退出编辑器命令:q:q!:x未修改则退出,做过修改则提示保存不保存退出保存后退出(总做保存)对:q有提示时,若不保存退出,再进入末行模式,:q!;若保存退出,可输入Z、Z,或再进入末行模式,:x2、进入命令行的方法启动Vim时自动进入;在其它模式时按“ESC”键进入。3、命令行命令(1)退出编辑器Z、Z

:保存所编辑的内容,退出vim,返回到s

。(2)增加文本命令ashift+aishift+ioshift+o:在光标位置后增加文本:在当前行末增加文本:在光标位置前增加文本:在当前行前面增加文本:在当前行下打开一行增加文本:在当前行上打开一行增加文本块

命令V/v

:块开始Y/y

:块结束并P/p

:块粘贴删除文本:删除光标位置的字符:从当前光标位置删除到行尾:删除当前行:删除当前行的剩余部分xd、$d、dshift+d(5)搜索/pattern?pattern:从光标开始处向文件尾搜索pattern字符:从光标开始处向文件首搜索pattern字符(5)改变和替换命令:s/p1/p2/g:

当前行中所有的p1均用p2替代:n1,n2

s/p1/p2/g:

将第n1至n2中所有的p1均用p2替代:g/p1/p2/g:

当文件中所有的p1均用p2替代资料《LinuxC》资源

:ftp://ligLinux编程概述GCCMakefile课程实践Linux编程概述GCCMakefile课程实践Linux编程概述Linux的编程语言开发过程Linux开发工具Linux的编程语言基本语言C、C++、Java……语言Perl、PHP、Bash……开发过程编辑编译运行调试对源代码进行编辑,VI对源代码编译,生成目标程序,GCC将分散的模块组成一个可执行的整体运行编译好的程序./+目标文件名调试运行时的错误GDB---

continue函数库分为静态库和动态库。静态库:时,静态库的文件代码会被拷贝到可执行文件中。动态库:时,动态库的代码不会被加入可执行文件中,而是在程序被执行的时候加载。Linux开发工具编辑工具VI编译工具GCCLinux编程概述GCCMakefile课程实践GCC简介基本规则常用参数实例分析简介1/3GCC概述gcc是一个强大的工具集合,它包含了预处理器,编译器,汇编器, 器等组件。它会在需要的时候调用其他组件。输入文件的类型和传递给gcc的参数决定了gcc调用具体的哪些组件。对于开发者,它提供的足够多的参数,可以让开发者全面控制代码的生成,这对系统级的 开发非常重要他可以处理C、C++、Fortan、Pascal、Objective-C、Java、Ada等。简介2/4简介3/4GCC的历史1984,FSF建立,GNU

Project:开放系统支撑1985,GCC项目启动1987,GCC

1.0

release,C

compiler1991,Linux项目开始发布1992,GCC2.0

release,C/C++1994,Linux1.0

release1997,EGCS。Architecture

Related

Optimizationand

C++support2001,

GCC3.0

release,EGCS

Merged,MultiLanguages/

s2005,

GCC4.0

release,IR

Enhanced2007,

GCC4.2

release,OpenMP

support简介4/4系统GCC的特点支持多种编程语言-C/C++/Fortan/JAVA……可移植性强:主要采用C语言编写交叉支持能力强Build,

host

and处理器支持多X86/ia/MIPS/ARM/SPARC/……应用范围广

高性能计算、

服务器、PC、模块化设计前端+中间表示|后端,松耦合基本规则GCC

令格式gcc

[options]

infile…..c为后缀的文件,C语言源代码文件;.o为后缀的文件,是编译后的目标文件.s为后缀的文件,是汇编语言源代码文件;gcc所包含的工具cc

:C编译器cpp

:C预处理器。编译器用它来将#include和#define

这类 在源文件中展开。g++:C++编译器gcc

:C编译器gccbug

:一个s,帮助创建有价值的bug报告。gcov

:覆盖测试工具,用来分析在程序的哪里做优化的效果最好。libgcc

gcc:的运行时库libstdc++:准C++库,包含许多常用的函数。libsupc++:为C++语言提供支持的库函数。1、命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。2、接着调用cc进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。3、汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,以.s和.S的汇编语言源代码文件经过预编译的汇编语言源代码文件都生成以.o为后缀的目标文件。4、当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的库中连到合适的地方。输入文件的类型gcc是通过后缀名来区别输入文件的类型,下面是gcc所遵循的部分约定规则。c为后缀的文件,C语言源代码文件;.a为后缀的文件,是由目标文件构成的 库文件;.C,.cc或.cxx

为后缀的文件,是C++源代码文件;.h为后缀的文件,是程序所包含的头文件;.i

为后缀的文件,是已经预处理过的C源代码文件;.ii为后缀的文件,是已经预处理过的C++源代码文件;.m为后缀的文件,是Objective-C源代码文件;.o为后缀的文件,是编译后的目标文件;.s为后缀的文件,是汇编语言源代码文件;.S为后缀的文件,是经过预编译的汇编语言源代码文件。二、gcc应用格式gcc的格式为:gcc

[option]file……gcc编译器有许多选项,但对于普通用户来说只要知道其中常用的几个就够了。下面为几个最常用的选项:

-o表示要求编译器生成所指定名字的可执行文件(必须指定名字);

-c表示只要求编译器进行编译和汇编,而不要求,生成后缀为.o的同名的目标文件(不需要指定名字);编辑源程序,文件名为

o.cvoid

main(){

printf(“ o

theworld!\n”);}1)

gcc

–o

o

o.c对

o.c进行编译 ,生成可执行文件o.exe。需要输入目标文件名。。产生的2)

gcc

–c只对目标文件为o.co.c进行编译、汇编,不o.o。三、gcc应用举例一起来看一个例子p32File:main.c#include

<stdio.h>#include

"sub.h"int

main(int

argc,

char

*argv[]){int

i;printf("Main

fun!\n");sub_fun();return

0;}File:sub.hvoid

sub_fun(void);File:sub.cvoid

sub_fun(void){printf("Sub

fun!\n");}在s

里输入如下命令:#

gcc

–c

–o

main.o

main.c#

gcc

–c

–o

sub.o

sub.c#

gcc

–o

test

main.osub.o-E

表示编译器对源文件只进行预处理就停止,而不做编译、汇编和

;-S

表示编译器只进行编译,而不做汇编和

;(不需要输入目标文件名)例如:

gcc

–S

o.c只对

o.c编译,产生了汇编语言文件

o.s。不需要输入目标文件名。2.警告选项-Wall

指定产生全部的警告信息。例如

:

#gcc

–Wall

-c

main.c产生全部警告信息,比如没有制定类型的

、在声就没有再使明之前就使用的函数、局部变量除了用等。3.调试选项-g要求编译器在编译的时候,产生对程序进行调试的信息;例如: gcc

–g

–o

o

o.c4.优化选项-O

或-O1

是编译器对程序提供的编译优化选项,可以提高执行文件的运行效率;例如

:

#gcc

–Wall -O

-cmain.c-O0、-O1

、-O2

、-O3

是编译器的优化选项的4个级别。-O0表示没有优化,-O1为缺省值,-O3优化级别高5.添加包含文件及库文件路径-Idir...把dir加到头文件的搜索路径中,而且gcc会在搜索标准头文件之前先搜索dir.-L

dir...把dir加到库文件的搜索路径中,而且gcc会在搜索标准库文件之前先搜索dir.优化选项-O或-O1是编译器对程序提供的编译优化选项,可以提高执行文件的运行效率;例如

:

#gcc

–Wall -O

-cmain.c-O0、-O1

、-O2、-O3

是编译器的优化选项的4个级别。-O0

表示没有优化,-O1为缺省值,-O3优化级别高-O

或-O1

是编译器对程序提供的编译优化选项,可以提高执行文件的运行效率;例如

:

#gcc

–Wall -O

-cmain.c-O0、-O1

、-O2、-O3是编译器的优化选项的4个级别。-O0

表示没有优化,-O1为缺省值,-O3优化级别高gcc所生成的目标文件格式所生成的为可执行文件,Linux有两种可执行文件:ELF(a.exe)和a.out。ELF(Executive

linked

file)为可执行文件,是一种新标准,功能更强大。文件的扩展名为.exe。ELF为Linux的默认格式gcc编译器命令详解httpea76e58fa0417.html/view/9ce92efa941Linux编程概述GCCMakefile课程实践Makefile简介Make的语法及常用参数Makefile的基本结构实例分析简介1/2What

is

Make?Make

是用于自动编译、 程序的实用工具。Make的优点“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了 开发的效率。What

is

Makefile?在大型的开发项目中,通常有几十个到上百个的源文件,如果每次均手工键入gcc命令进行编译,会非常不方便。Linux专门为

开发提供了一个自动化的管理工具GNU

Make。Make的主要工作是Makefile文件的内容。该文件描述了目标文件之间的依赖关系,以及制定编译过程中使用的工具。同时,Make检查目的文件的时间戳,如果目的文件的时间戳至少比他的一个依靠文件旧,Make可以自动地更新和编译程序。简介2/2Make的工作原理当输入make命令之后,会默认的在当前下寻找名为“Makefile”或“makefile”的文件。寻找到文件之后,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义 令的错误,或是编译不成功,make根本不理。make

文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。Make的语法及常用参数]…make的使用make

[options]

[常见的选项:-f

FILE

以指定的FILE

文件作为makefile。令,但不执行这些-n

只打印要执行命令。-s

在执行命令时不显示命令。-d

显示调试信息make概述make依靠Makefile文件完成。默认情况下,GNU

make工具在当前工作 中按如下顺序搜索makefile:”GNU

makefile”→”makefile”→”Makefile”。在Linux系统中,使用Makefile作为makefile文件。如果要使用其他文件作为makefile,则可利用下面make命令指明makefile文件:”#make

–f

Makefile.debug”。比如:“Make.Linux”,“Make.Solaris”,“Make.AIX”等,如果要指定特定的Makefile,你可以使用make的“-f”和“--file”参数,如:make-f

Make.Linux或make--file

Make.AIX。Makefile是一个文本格式的数据库文件,包含一些规则,告诉make编译哪些文件,在什么条件下编译。Makefile的基本结构

1/2一个简单的Makefile文件包含一系列的“规则”,其样式如下:目标( )

:

依赖(prerequiries)…<tab>命令(command)Makefile的基本结构

2/2目标(

)通常是要产生的文件的名称,目标的例子是可执行文件或OBJ文件。目标也一个执行的动作名称,这样的目标通常称为伪目标(PHONY)诸如‘clean’。依赖是用来输入从而产生目标的文件,一个目标经常有几个依赖。命令是Make执行的动作,一个规则可以含有几个命令,每个命令占一行。每个命令行前面必须是一个Tab字符,即命令行第一个字符是Tab。这是不

容易出错的地方。先举一个实例来认识Make和Makefile文件的用法一起来看一个例子p45File:

o.c#include

<stdio.h>int

main(int

argc,

char

*argv[]){printf(" oWorld!\n");return

0;}File:makefileo:

o.c(Tab)gcc

-oo

o.cclean:(Tab)rm

–f

o如果一个工程有3个头文件,和8个C文件,为了完成前面所述的那三个规则,的Makefile应该是下面的这个样子的。edit

:

main.o

kbd.o

command.odisplay.o

\insert.o

search.o

files.o

utils.ogcc

-o

edit

main.o

kbd.o

command.o

display.o

\insert.o

search.o

files.o

utils.omain.o

:

main.c

defs.hgcc

-c

main.ckbd.o

:

kbd.c

defs.h

command.hgcc

-c

kbd.ccommand.o:

command.c

defs.h

command.hgcc

-c

command.cdisplay.o

:

display.c

defs.h

buffer.hgcc

-c

display.c反斜杠(\)是换行符的意思以TAB键开头insert.o

:

insert.c

defs.h

buffer.hgcc

-cinsert.csearch.o

:

search.c

defs.h

buffer.hgcc

-csearch.cfiles.o

:

files.c

defs.h

buffer.h

command.hgcc

-cfiles.cutils.o

:utils.c

defs.hgcc

-cutils.cclean

:rm

edit

main.o

kbd.o

command.o

display.o

\insert.o

search.o

files.o

utils.omakefile中使用变量在上面的例子中,先让

看看edit的规则:edit

:

main.o

kbd.o

command.o

display.o

\insert.o

search.o

files.o

utils.ogcc

-o

edit

main.o

kbd.o

command.o

display.o

\insert.o

search.o

files.o

utils.o可以看到[.o]文件的字符串被重复了两次,如果的工程需要加入一个新的[.o]文件,那么 需要在两个地方加。当然, 的makefile并不复杂,所以在两个地方加也不累,但如果makefile变得复杂,那么

就有可能会忘掉一个需要加入的地方,而导致编译失败。所以,为了makefile的易 ,在makefile中 可以使用变量。makefile的变量也就是一个字符串,理解成C语言中的宏可能会更好。的makefile中以“$(objects)”的方式来使用比如,

一个变量,叫objects.

在makefile一开始就这样定义:objects

=

main.o

kbd.o

command.o

display.o

\insert.o

search.o

files.o

utils.o很方便地在这个变量了程序如下:objects

=

main.o

kbd.o

command.o

display.o

\insert.o

search.o

files.o

utils.oedit

:

$(objects)gcc-o

edit

$(objects)……clean

:rm

edit

$

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论