




已阅读5页,还剩105页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章Linux编程基础,5.1开发环境的建立5.2Linux5.3Shell5.4Vi编辑器,开发环境的建立进行项目开发前,首先要做的是搭建一套基于Linux操作系统的应用开发环境,一般由目标板和宿主机所构成。目标板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主机来完成。开发环境对硬件没有特殊的要求,但是为了双方之间建立连接关系,关键的接口包括串口、以太网口和USB口等是必不可少的。,传统的嵌入式开发环境需要单片机的仿真器,包含C语言、汇编语言、调试工具等的集成开发环境IDE和实时操作系统等,整个开发系统建立起来至少需要几万元。由于Flash技术的发展,特别是一些CPU可以用JTAG接口下载调试,故仿真器已可以省去。,随着标准化的推广,JTAG调试工具变得越来越简单、越来越通用。一些BDM调试工具已经简单到只需在PC机并行口和单片机的JTAG接口之间加一级5V到3.3V的电平转换,这使得自制调试工具变得越来越容易。软件方面,Linux下的自由软件GNUgcc可以完成几乎所有知名CPU,以及DSP的交叉C编译和调试,故可以省去IDE。,个人用Linux开发嵌入式应用程序,可以在自己的PC机上安装一套Linux操作系统,使用Linux中的XWindows打开若干个窗口用于编译、下载、调试等。如果整个研发小组由多名工程师组成,常采用的办法是:用1台PC机运行Linux作为服务器;开发小组中每个成员都通过局域网用Telnet登录到这台Linux服务器上去;被开发的目标板也挂在网上。在服务器的Linux环境下,各个工程师用GNUgcc编译生成目标代码,再用FTP传回到自己的PC机上,然后通过串行口或网络下载到目标机上。,Linux常用命令,shell是一种命令行解释程序(Command-LanguageInterpreter),负责用户和操作系统的沟通。在终端方式的shell提示窗口如图4.1所示。,图4.1shell提示窗口,进入与退出命令1进入系统Linux是多用户操作系统,它允许多个用户同时使用一台计算机,这是它与MicrosoftWindows的最大区别之一,因此Linux有比MicrosoftWindows严格得多的用户管理。,在字符终端界面环境下,终端屏幕上出现如下登录提示行:login:在它的后面输入自己的登录名。如果是新用户,那么要与系统管理员联系,取得一个合法的登录名。输入登录名、并按【Enter】键后,在屏幕上出现Password:,要求在其后输入口令。输入的口令字符串并不在屏幕上显示,以利于保密。输入完口令并按【Enter】键后,系统就对登录名和口令进行验证。如果确认无误,则在屏幕上显示若干行信息,最后一行出现:$_$是一般用户的shell提示符,其后是闪烁的光标条(root用户的提示符是“#”)。,2退出系统当完成工作后,需要从系统中退出。退出系统的过程很简单,在$提示符出现后,输入logout命令,然后按下【Enter】键或同时按下【Ctrl】和【D】键,屏幕上会再次出现login:表示已经从系统中退出。如果想再次进入系统,必须重新登录。,系统询问命令1询问当前日期和时间的date命令例如$date。2询问当前用户的who命令who命令可列出当前每一个处在系统中的用户的登录名、终端名和登录进入时间。3显示当前目录路径名的pwd命令,文件操作命令Linux命令行的一般格式为命令名选择项参数,1登录和退出Linux启动后,给出login命令,等待用户登录。Login:Password:使用logout命令退出外壳。2更改账号密码使用passwd命令来设置新用户的口令。在设置口令之后,账号即能正常工作。语法:passwdOldpassword:Newpassword:Retypenewpassword:,3联机帮助系统上几乎每条命令都带有相关的Manpage。在有困难时,可以立刻找到文件。语法:man命令例如,如果使用ls命令时遇到困难,可以输入:manls,4远程登录用来连接到其他机器执行工作。在Linux上,由于对TCP/IP协议的完全支持,用户可以很容易的从Linux主机连接其他的计算机系统。语法:rlogin主机名-l用户名例如:rlogindoc-luser使用user账号登录到工作站doc中。语法:telnet主机名或telnetIP地址例如:telnet51,5列出文件或目录语法:ls-atFlgRname其中name是文件名或目录名。ls命令用来浏览文件与目录,对于每个目录,该命令将列出其中所有的子目录与文件。6改变工作目录语法:cdname其中name是目录名、路径或目录缩写。cd除了有切换目录的功能外,还有一个功能就是,不管在哪个目录内,只要输入cd命令,不加任何参数,即可回到用户目录内。,7复制文件语法:cp-r源地址目的地址带目录的拷贝,相当于DOS内的xcopy。8移动或更改文件、目录名称语法:mv源地址目的地址可以为文件或目录改名,也可以将文件由一个目录移入另一个目录。,9建立新目录语法:mkdir目录名10删除目录语法:rmdir目录名或rm目录名11删除文件语法:rm文件名12列出当前所在的目录位置语法:pwd,13查看文件内容语法:cat文件名14分页查看文件内容语法:more文件名或cat文件名|more15查看目录所占磁盘容量语法:du-s目录,16文件传输(1)拷贝文件或目录至远程工作站。语法:rcp-r源地址目的主机名:目的地址。(2)自远程工作站拷贝文件或目录。语法:rcp-r源主机名:源地址目的地址。(3)本地工作站与远程工作站之间的文件传输,必须拥有远程工作站的账号及密码,才可进行传输工作。语法:ftp主机名或ftpip地址。,17文件权限的设定(1)改变文件或目录的读、写、执行权限。语法:chmod-Rmodenamename:文件名或目录名。mode:3位8进制数字或rwx的组合。r-read(读),wwrite(写),xexecute(执行),uuser(当前用户),g-group(组),o-other(其他用户)。(2)改变文件或目录的所有权。语法:chown-R用户名name,18检查自己所属的工作组名称语法:groups19改变文件或目录工作组所有权语法:chgrp-R工作组名name20改变文件或目录的最后修改时间语法:touchname21文件的链接同一文件,可拥有一个以上的名称,也就是把一个文件进行链接。语法:ln老文件名新文件名22文件中字符串的查找语法:grepstringfile,23查寻文件或命令的路径语法:whereiscommand显示命令的路径。语法:whichcommand显示命令的路径,及使用者所定义的别名。语法:whatiscommand显示命令功能的摘要。语法:findsearch-path-namefilename-print搜寻指定路径下某文件的路径。24比较文件或目录的内容语法:diff-rname1name2,25文件打印输出用户可用.login文件中的setenvPRINTER命令来设定打印机名。26一般文件的打印语法:lpr-P打印机名文件名27ptroff文件的打印语法:ptroff-P打印机名-man-ms文件名28打印机控制命令(1)检查打印机状态、打印作业顺序号和用户名。语法:lpq-P打印机名(2)删除打印机内的打印作业(用户仅可删除自己的打印作业)。语法:lprm-P打印机名用户名或作业编号,29进程控制(1)查看系统中的进程。语法:ps-aux(2)结束或终止进程。语法:kill-9PIDPID:利用ps命令所查出的进程号。(3)在后台执行进程的方式。语法:命令return0;然后在命令行执行:$arm-linux-gcchelloworld.c-ohelloworld$filehelloworld如果输出以下信息,说明成功建立了编译工具。helloworld:ELF32-bitLSBexecutable,ARM,version1,dynamicallylinked(usessharedlibs),notstripped,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的所有开发工具都可以从上下载,基于ARM的工具可以从获得。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工具可以从/pub/gnu/gdb/上下载,gcc编译器的使用,gcc最基本的用法是:gccoptionsfile.其中的option是以“-”开始的各种选项,file是相关的文件名。在使用gcc的时候,必须要给出必要的选项和文件名。gcc的整个编译过程分别是:预处理,编译,汇编和链接。,gcc编译器几个最常用的选项:-o表示要求编译器生成指定文件名的可执行文件;-c表示只要求编译器进行编译,而不要进行链接,生成以源文件的文件名命名但把其后缀由.c或.cc变成.o的目标文件;-g要求编译器在编译的时候提供以后对程序进行调试的信息;-E表示编译器对源文件只进行预处理就停止,而不做编译、汇编和链接;-S表示编译器只进行编译,而不做汇编和链接;-O是编译器对程序提供的编译优化选项,在编译的时候使用该选项,可以使生成的执行文件的执行效率提高;-Wall指定产生全部的警告信息。,$gcc-ohellohello.cgcc编译器就会生成一个hello的可执行文件。在hello.c的当前目录下执行./hello就可以看到程序的输出结果,在屏幕上打印出“Hellotheworld”的字符串来。GNU编译器生成的目标文件默认格式为elf(executivelinkedfile)格式,这是Linux系统所采用的可执行链接文件的通用文件格式。elf格式由若干个段(section)组成,如果没有特别指明,由标准c源代码生成的目标文件中包含以下段:.text(正文段)包含程序的指令代码,.data(数据段)包含固定的数据,如常量,字符串等,.bss(未初始化数据段)包含未初始化的变量和数组等。,Makefile文件和Make命令,Makefile文件描述了目标文件之间的依赖关系,以及指定编译过程中使用的工具。一个工程中的源文件按其类型、功能、模块分别放在若干个目录中。Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译。Makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。Makefile带来的好处就是“自动化编译”,一旦写好,只需要一个Make命令,整个工程完全自动编译,极大地提高了软件开发的效率。,Makefile的作用是根据配置的情况,构造出需要编译的源文件列表,然后分别编译,并把目标代码链接到一起,最终形成可执行的二进制文件。Makefile中一般包含如下内容:需要由make工具创建的项目,通常是目标(target)文件和可执行文件。要创建的项目依赖于哪些文件。创建每个项目时需要运行的命令。,例如:example.o:example.cexample.hg+-c-gexample.c从上面的例子可以看出,第一行指定example.o为目标,并且依赖于example.c和example.h文件。随后的行指定了如何从目标所依赖的文件建立目标。当example.c或example.h文件在编译之后又被修改,则make工具可自动重新编译example.o,如果在前后两次编译之间,example.c和example.h均没有被修改,而且example.o还存在的话,就没有必要重新编译。,1Makefile中的变量顶层Makefile定义并向环境中输出了许多变量,为各个子目录下的Makefile传递一些信息。有些变量,比如,SUBDIRS,不仅在顶层Makefile中定义并且赋初值,而且在arch/arm/Makefile还做了扩充。常用的变量有以下几类:版本信息版本信息有VERSION、PATCHLEVEL、SUBLEVEL、EXTRAVERSION和KERNELRELEASE等变量,用来定义当前内核的版本。比如,VERSION=2,PATCHLEVEL=4,SUBLEVEL=18,EXTRAVERSION=-rmk7,共同构成内核的发行版本KERNELRELEASE:2.4.18-rmk7。,CPU体系结构:ARCH在顶层Makefile的开头,用ARCH定义目标CPU的体系结构,比如,ARCH:=arm。许多子目录的Makefile中,要根据ARCH的定义选择编译源文件的列表。路径信息:TOPDIR和SUBDIRSTOPDIR定义了Linux内核源代码所在的根目录。SUBDIRS定义了一个目录列表,在编译内核或模块时,顶层Makefile就是根据SUBDIRS来决定进入哪些子目录。SUBDIRS的值取决于内核的配置。,内核组成信息:HEAD,CORE_FILES,NETWORKS,DRIVERS,LIBS。Linux内核文件vmlinux是由以下规则产生的:vmlinux:$(CONFIGURATION)init/main.oinit/version.olinuxsubdirs$(LD)$(LINKFLAGS)$(HEAD)init/main.oinit/version.o-start-group$(CORE_FILES)$(DRIVERS)$(NETWORKS)$(LIBS)-end-group-ovmlinux,编译信息:CPP,CC,AS,LD,AR,CFLAGS,LINKFLAGS在Rules.make中定义的是编译的通用规则,具体到特定的场合,需要明确给出编译环境,编译环境就是在以上的变量中定义的。针对交叉编译的要求,定义了CROSS_COMPILE。比如:CROSS_COMPILE=arm-linux-CC=$(CROSS_COMPILE)gccLD=$(CROSS_COMPILE)ld.由于CROSS_COMPILE定义了交叉编译器前缀arm-linux-,表明所有的交叉编译工具都是以arm-linux-开头的,所以在各个交叉编译器工具之前,都加入了$(CROSS_COMPILE),以组成一个完整的交叉编译工具文件名,比如,arm-linux-gcc。,配置变量CONFIG_*.config文件中有许多的配置变量等式,用来说明用户配置的结果。例如,CONFIG_MODULES=y表明用户选择了Linux内核的模块功能。.config被顶层Makefile包含后,就形成许多的配置变量,每个配置变量具有确定的值:y表示本编译选项对应的内核代码被静态编译进Linux内核;m表示本编译选项对应的内核代码被编译成模块;n表示不选择此编译选项;如果没有赋值,那么配置变量的值为空。,2Rules.make变量Rules.make定义了所有Makefile共用的编译规则。Linux把共用的编译规则统一放置到Rules.make中,并在各自的Makefile中通过语句“includeRules.make”包含Rules.make。这样就避免了在多个Makefile中重复同样的规则。Rules.make文件定义了许多变量,最为重要的是编译、链接列表变量。O_OBJS、L_OBJS、OX_OBJS和LX_OBJS:这些变量代表的是本级目录下需要编译进Linux内核vmlinux的目标文件列表,其中OX_OBJS和LX_OBJS中的“X”表明目标文件使用了EXPORT_SYMBOL输出符号。M_OBJS和MX_OBJS:定义本级目录下需要被编译成可装载模块的目标文件列表。同样,MX_OBJS中的“X”表明目标文件使用了EXPORT_SYMBOL输出符号。O_TARGET和L_TARGET:每个子目录下都有一个O_TARGET或L_TARGET,Rules.make首先从源代码编译生成O_OBJS和OX_OBJS中所有的目标文件,然后使用$(LD)-r把它们链接成一个O_TARGET或L_TARGET。O_TARGET以.o结尾,而L_TARGET以.a结尾。,3子目录Makefile子目录Makefile用来控制本级目录下源代码的编译规则。#Makefileforthelinuxkernel.#Allofthe(potential)objectsthatexportsymbols.#Thislistcomesfromgrep-lEXPORT_SYMBOL*.hc.export-objs:=tc.o#Objectfilelists.obj-y:=obj-m:=obj-n:=obj-:=obj-$(CONFIG_TC)+=tc.oobj-$(CONFIG_ZS)+=zs.oobj-$(CONFIG_VT)+=lk201.olk201-map.olk201-remap.o#Filesthatarebothresidentandmodular:removefrommodular.obj-m:=$(filter-out$(obj-y),$(obj-m)#TranslatetoRules.makelists.L_TARGET:=tc.aL_OBJS:=$(sort$(filter-out$(export-objs),$(obj-y)LX_OBJS:=$(sort$(filter$(export-objs),$(obj-y)M_OBJS:=$(sort$(filter-out$(export-objs),$(obj-m)MX_OBJS:=$(sort$(filter$(export-objs),$(obj-m)include$(TOPDIR)/Rules.make,4makemake是一个命令工具,是一个解释Makefile中指令的命令工具。一般来说,大多数的IDE都有这个命令,比如:Delphi的make,VisualC+的nmake,以及Linux下GNU的make。make命令执行时,需要一个Makefile文件,以告诉make命令怎么去编译和链接程序。一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的Makefile来执行,一切都是自动的。,GNU的make工作时的执行步骤入下:(1)读入所有的Makefile。(2)读入被include的其他Makefile。(3)初始化文件中的变量。(4)推导隐含规则,并分析所有规则。(5)为所有的目标文件创建依赖关系链。(6)根据依赖关系,决定哪些目标要重新生成。(7)执行生成命令。15步为第一个阶段,67步为第二个阶段。第一个阶段中,如果定义的变量被使用了,那么,make会把其展开在使用的位置。但make并不会完全马上展开,make使用的是拖延战术,如果变量出现在依赖关系的规则中,那么仅当这条依赖关系被决定要使用了,变量才会在其内部展开。,配置文件,在Linux内核中,配置命令有多种方式:MakeconfigMakeoldconfigscripts/ConfigureMakemenuconfigscripts/MenuconfigMakexconfigscripts/tkparse以字符界面配置(makeconfig)为例,顶层Makefile调用scripts/Configure,按照arch/arm/config.in来进行配置。命令执行完后产生文件.config,其中保存着配置信息。下一次再做makeconfig将产生新的.config文件,原.config被改名为.config.old。,下面对配置文件所支持的配置语句做简要的说明。1顶层菜单mainmenu_name/prompt/prompt/其中/prompt/是一串提示符,mainmenu_name设置最高层菜单的名字,只在makexconfig时才会显示。,2询问语句bool/prompt/symbol/hex/prompt/symbol/word/int/prompt/symbol/word/string/prompt/symbol/word/tristate/prompt/symbol/询问语句首先显示一串提示符/prompt/,等待用户输入,并把输入的结果赋给/symbol/所代表的配置变量。不同的询问语句的区别在于它们接受的输入数据类型不同,比如,bool接受布尔类型(y或n),hex接受16进制数据。有些询问语句还有第三个参数/word/,用来给出默认值。,3定义语句define_bool/symbol/word/define_hex/symbol/word/define_int/symbol/word/define_string/symbol/word/define_tristate/symbol/word/不同于询问语句的等待用户输入,定义语句显式的给配置变量/symbol/赋值/word/。,4依赖语句dep_bool/prompt/symbol/dep/.dep_mbool/prompt/symbol/dep/.dep_hex/prompt/symbol/word/dep/.dep_int/prompt/symbol/word/dep/.dep_string/prompt/symbol/word/dep/.dep_tristate/prompt/symbol/dep/.与询问语句类似,依赖语句也是定义新的配置变量。不同的是,配置变量/symbol/的取值将依赖于配置变量列表/dep/。这就意味着,被定义的配置变量所对应功能的取舍取决于依赖列表所对应功能的选择。,5选择语句choice/prompt/word/word/choice语句首先给出一串选择列表,供用户选择其中一种。比如,LinuxforARM支持多种基于ARM核的CPU,Linux使用choice语句提供一个CPU列表,供用户选择:choiceARMsystemtypeAnakinCONFIG_ARCH_ANAKINSA1100-basedCONFIG_ARCH_SA1100,6if语句if/expr/then/statement/.fiif/expr/then/statement/.else/statement/.fiif语句对配置变量进行判断,并做出不同的处理。判断条件/expr/可以是单个配置变量或字符串,也可以是带操作符的表达式。操作符有:=,!=,-o,-a等。,7菜单块(menublock)语句mainmenu_optionnext_commentcomment.endmenu8Source语句source/word/word/是文件名,source的作用是调入新的文件。,Vi编辑器的使用,1工作模式Vi是“Visualinterface”的简称,可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。Vi有三种基本工作模式:命令行模式、文本输入模式和末行模式。,命令行模式任何时候,不管用户处于何种模式,只要按一下键,即可使Vi进入命令行模式;我们在shell环境(提示符为$)下输入启动命令“vi”,进入编辑器时,也是处于该模式下。在该模式下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。,文本输入模式在命令模式下输入插入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按Esc键即可。末行模式在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行,显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的。末行命令执行完后,Vi自动回到命令模式。,2进入在提示符“$”后键入Vi和想要编辑的文件名,便可进入Vi。例如:$viexample.c如果只键入Vi,而不带文件名,也可以进入Vi,之后在光标处键入文件内容。进入Vi后,首先进入的就是命令模式,进入Vi时,用户不仅可以指定一个待编辑的文件名,而且还有许多附加操作。如果希望在进入Vi之后,光标处于文件中特定的某行上,可在Vi后加上选项+n,其中n为指定的行数。例如:$vi+5example1.c3退出在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出,返回到shell。,在末行模式下,输入命令::wVi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使w命令时,可以再给编辑文件起一个新的文件名。:wnewfile此时Vi将把当前文件的内容保存到指定的newfile中,而原有文件保持不变。,在末行模式下,输入命令::q系统退出Vi返回到shell。若在用此命令退出Vi时,编辑文件没有被保存,则Vi在显示窗口的最末行显示如下信息:Nowritesincelastchange(use!tooverrides)提示用户该文件被修改后没有保存,然后Vi并不退出,继续等待用户命令。若用户就是不想保存被修改后的文件而要强行退出Vi时,可使用命令::q!,应用程序的调试,在开发环境和操作系统建立后,就可以开始应用程序的开发了。应用程序的开发一般先在宿主机上调试完成,然后下载到目标板。为保证正常下载,必须建立可靠的连接。建立连接应用程序的调试是在保证宿主机与目标机正确连接的基础上进行的,连接的方式主要有串口连接、网络连接和JTAG口连接等方式。1串口连接在Linux下以root身份运行Minicom,加-s选项配置Minicom,如图所示。然后从菜单中选择SerialPortSetup,按回车键,进入如图所示的界面。此时按“A”以设置“SerialDevice”。如果使用串口1,则输入/dev/ttyS0。如果使用串口2,则输入/dev/ttyS1。,按“E”键进入设置“bps/par/Bits”(波特率)界面,如图所示。再按“I”以设置波特率为115200。然后按回车退回到上一级菜单,按“F”键设置“HardwareFlowControl”为“NO”,其他选项使用默认值。设置完成后,按回车键返回到串口设置主菜单,选择“Savesetupasdfl”,按回车键保存刚才的设置,如图所示。再选择“Exit”退出设置模式。刚才的设置被保存到“/etc/minirc.dfl”。设置完毕,如果此时启动目标板,就会看到vivi的启动信息,当Linux启动以后,Minicom就相当于虚拟终端,就能通过它来操作目标板了。要退出Minicom,同时按下“Ctrl+A”键,松开后紧接着再按下“Q”键,在跳出的窗口中,选择“Yes”即可。Minicom设置好后就可以用来下载程序了。,2网络连接文件传输协议(FileTransferProtocol,FTP)是一种广泛应用的协议,是通过网络从一台计算机向另一台计算机传输文件。为了实现Linux环境下的FTP服务器配置,绝大多数的Linux发行套装中都选用的是性能优秀的服务器软件Wu-Ftpd(WashingtonUniversityFTP)。以下我们以RedHatLinux为例来说明Wu-FTP的安装设置。,(1)安装。根据服务对象的不同,FTP服务可以分为两类:一类是系统FTP服务器,它只允许系统上的合法用户使用;另一类是匿名FTP服务器,它允许任何人登录到FTP服务器,与服务器连接后,在登录提示中输入Anonymous,即可访问服务器。针对这两种服务,可以通过RedHat的第一张光盘安装Wu-Ftpd的RPM包,安装时只需以Root身份进入系统并运行下面的命令即可:Rpm-ivhanonftp-x.x-x.i386.rpmRpm-ivhwu-ftpd-x.x.x-x.i386.rpm其中-x.x-x和-x.x.x-x是版本号。,(2)启动。与Apache一样,Wu-Ftpd也可以配置为自动启动:执行RedHat附带的Setup程序,在“SystemService”选项中选中Wu-Ftpd,按下OK按钮确定退出即可。自动启动固然方便,但是,当我们更改了Wu-Ftpd的配置文件后,需要用到手动启动:启动:/usr/sbin/ftprestart关闭:/usr/sbin/ftpshut,(3)FTP服务器的配置。为了满足用户的需要,可以使用存放在/etc目录中的配置文件来进行FTP服务器的配置。这些文件都是以FTP开头的。/etc/ftpusers:该文件夹中包含的用户不能通过FTP登录服务器,有时将需要禁止的用户账号写入文件/etc/ftpuser中,这样就可以禁止一些用户使用FTP服务。/etc/ftpconversions:用来配置压缩/解压缩程序。,/etc/ftpgroups:创建用户组,这个组中的成员可以访问FTP服务器。/etc/ftpphosts:用来禁止或允许远程主机对特定账户的访问。/etc/ftpaccess:是非常重要的一个配置文件,用来控制存取权限,文件中的每一行定义一个属性,并对属性的值进行设置。利用这些文件,能够非常精确地控制不同用户、在不同时间、从不同地点连接服务器,并且可以对他们连接后所做的工作进行检查跟踪。,(4)验证。安装、配置好FTP服务器后,就可以进行验证,用图形工具和命令行均可访问FTP服务器。在宿主机端Linux启动后需要配置IP地址:#ifconfigeth0启动超级终端,配置目标板以太网IP地址:#ifconfigeth0192.168.0.*配置以太网广播地址和子网掩码:ifconfigeth0broadcast55netmask配置网关:routeadddefaultgw192.168.*.*进入目标板的tmp目录,输入“”即可使用FTP命令行方式登录FTP服务器。随后可以使用“cd/home/ftp”进入服务器ftp目录,ls列出服务器目录内文件,“get文件名”下载文件到当前目录下。,编写应用程序,首先建立工作目录,在此假设为/tmp。选用文本编译器VI,编写程序源代码,当然也可以选择自己所熟悉的vim,或者是Xwindows界面下的gedit等。实际的源代码比较简单,如下所示:#includeintmain(void)printf(Hello,World!n);return0;保存文件名为hello.c。在宿主机端编译并运行hello程序:gccohellohello.chello正确的结果将在主机的显示器上打印如下字符串:Hello,World!编译在目标机上运行的hello程序:arm-linux-gccohellohello.c如果在RedHat中运行,该程序将出现如下错误结果:hellobash:hello:cannotexecutebinaryfile由于编译器采用的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 敏捷开发方法论2025年考试试题及答案
- 2025年软考软件设计师有效试题及答案汇编
- 法学概论从入门到精通的试题及答案
- 管理者的时间与精力分配计划
- 会计软件应用能力提升计划
- 积极心理与职业幸福感提升计划
- 供应链优化计划
- 城市交通需求管理重点基础知识点
- 美术班级文化建设活动计划
- 2024年陕西师范大学辅导员考试真题
- 人力资源管理视角下岗位胜任力素质模型的构建与优化
- 经济学中的时间价值试题及答案解读
- 2024年湖北省竹山县事业单位公开招聘名笔试题带答案
- 员工持股协议书合同
- 酒馆入股合同协议书
- 2025年人保财险陕西省分公司招聘(57人)笔试参考题库附带答案详解
- 民法典宣传进企业课件
- 基于核心素养下的高中数学情境教学研究
- 供热企业安全管理制度
- 《阿里巴巴招聘案例》课件
- 应聘索道面试题及答案
评论
0/150
提交评论