文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>嵌入式Linux开发基础学习小结

嵌入式Linux开发基础学习小结

时间:2010-04-18  来源:zhaodezhong

在易嵌培训有好几天时间了,总想把最近学的东西总结一下,这一阶段主要学Linux ,那就写写学习的心得吧!

学会vmware虚拟机的安装,其中关键的步骤就是内存分配,硬盘容量的选择,网卡选项的设置,如选择Bridged选项必须保证两台机器有物理连接,有线无线的都可以,还有就是解决在Linux下看不到U盘的问题,在虚拟机的Virtual Machine Settings 对话框中将USBController 设置为Automatically connectionnew USB devices to this virtual machine when it has focus ,这些都是虚拟机使用中应该注意的问题。除此以外,还要学会虚拟机里的暂停,恢复,全屏的功能。

在Linux安装的过程中注意点很多,经过几次尝试安装,学会用安装文件景象来安装Linux。但是安装后的Linux 系统仍不能正常使用Samba 服务(实现在Windows下查看虚拟机中Linux),在徐老师的帮助下,利用Linux 安装镜像中的rpm包,使用 rpm 的安装方法从新安装了 Samba ,使Samba 服务正常工作。安装过程如下:

首先,挂载Linux 安装镜像

#mount  /dev/cdrom  /mnt/

进入Service目录下

#cd  /mnt/Service

分别安装下列rpm 包

#rpm  -ivh samba -3.0.23c -2.i 386.rpm

#rpm  -ivh samba system –config –samba -1.2.39 -1.el5.noarch.rpm

#rpm  -ivh samba nfs –utils -1.0.9 -16.el5.i386.rpm

#rpm  -ivh system –config –nfs -1.3.23 -1.el5.noarch.rpm

我觉得,其实记住上面这个过程倒不是最重要的,关键还是学会问题的决绝方法,在系统安装的过程中难免会遗忘一些选项的设置,在系统安装完后发现一些功能不能正常使用,这是就要到Linux 的镜像文件中寻找安装程序的 rpm 包,要学会 rpm包安装方法(#rpm    -ivh  rpm包名)。

安装完Linux ,接下来大部分时间就是把时间花在使用上了。首先接触的Linux下一个比较重要的命令就是ifconfig(在windows 命令行中位 ipconfig) ,该命令用来查看ip地址和修改给网卡分配ip 地址,在虚拟机下安装的RedHat 系统可以有 bridged,NAT和Host三种网卡模式,当我们改变一种模式后需要使用 #service  network  restart 来重启网络服务。哦,差点忘了,ifconfig 和上面一条命令只有root 才有使用权限,如果你当前不是root 用户,是无法使用该命令的,这一点要注意。

接下来接触的一个很重要的概念是绝对路径和相对路径,Linux的目录是树形的,Linux的根目录是 / ,如果从根(/)开始的,那么它就是绝对路径;相对路径总是对当前的工作目录的,“.”表示当前路径,“..”表示当前路径的上级路径。

在文件和文件处理这一单元中,我了解了Linux系统中的文件类型,其包括普通文件、目录文件、特殊/设备文件、命名管道、符号链接、socket ,这些文件类型与Windows的区别很大,虽然学过操作系统,但是他们之间区别还是难以阐述清楚,以后的学习中更要注意加以区分。第一次接触管道的概念,很难理解,虽然这样命名比较形象,在后面的单元学习中,结合自己的理解,管道是Linux 系统中,将某个命令的标准输出与某个命令的标准输入相连,对应的操作符 “|” ,熟练使用管道对提高工作效率有帮助(虽然现在还不能熟练使用)。除了管道这个概念,徐老师讲的强调较多的就是 /proc (process)目录,该路径下的文件记录了系统进程运行的状态,在系统启动时建立,系统关闭时丢失,在系统运行过程中不可修改,这是除 ps 命令外,用户可以通过读取proc 文件信息了解系统状态。按徐老师的意思,这个操作能很大程度提高程序员的工作效率,虽说这一点现在还体会不到,但是还是把它记住,为以后学习大好基础。本单元还有一个很重要的概念就是文件的访问权限,在学习文件权限是首先要区分两类用户,一类是root ,一类是普通用户。Root充当系统管理员的角色,所以有无限的权利,它可以对普通用户的文件的权限做任意的(必要时)修改,其过程使用chmod 命令,普通用户可以定制谁可以访问自己的文件。Linux 中对文件的三类权限设置,分别对应三类用户,即文件创建者、文件创建者所在的组用户、其他组用户。某一文件有三种权限读(r)、写(w)、执行(x)。

进入第四单元关于输入输出重定向就不是那么好理解了,标准输入、标准输出和标准错误的Fd 分别是0、1、2,其实这样表示,个人认为就是简化描述,换个名字罢了。最重要的还是理解重定向的概念,简单的讲就是将命令的标准文件相关的默认文件(设备)改为其他文件,更简单地理解就是就是标准输出不输出到显示器,而输出到某一文件,标准输入不由键盘输入,而由某一文件输入,标准错误不输入标准错误相关的文件,而输出到显示器或指定文件里。(这样理解应该是对的)

Linux 进程这部分内容,学习了很重要的命令 ps (process state),以及Linux 系统中进程的前后台切换、悬挂(bg、fg、ctrl+z) ,还有进程的终止操作(kill、killall)。这一部分知识点要多多练习,这样可以熟练掌握各个命令。

Shell的环境变量中,环境变量PATH是最重要的,说它重要的原因是shell在执行程序时,shell将按PATH变量中给出的顺序搜索目录,找到的第一个与名称一致的可执行文件去执行,否则程序不能执行。通过#echo  $PATH 可以回显环境变量的值,如果要改变PASH的值,使用#export  $PATH=/home/student/foundation/test : $PATH是一个很好的方法,若要删除则做相反的操作就可以了。当然,通过学习我知道这不是最高级的方法,那上档次的方法是使用#vim /etc/profile ,进入profile后直接在里面修改PATH的值,改好之后重新Login一下就可以了,这样做正是验证了徐老师的一句话,Linux系统不会限制你做任何事,只要你愿意。在这里还有一个提高效率的工具,那就是使用元字符,它可以帮助我快速匹配到我所需要的文件和目录。在讲这部分知识点的时候,徐老师还提到“正则表达式”这个东西,虽然我到现在还不知道它是什么东西,以后慢慢去了解吧,搞我们这行要知道的太多。

谈到Linux文件系统,前面我已经提到了Samba服务的使用了,这里就谈谈学习NFS的经历吧,和Samba一样,它的作用也是在网络上共享资源。在这里有必要要理解一下挂载的概念,Linux显示所有的目录都在一个目录树下,而与他们位于哪个驱动器/硬件无关。在Linux下的磁盘内容作为子目录形式出现。可移动介质的内容不会自动出现在这些目录下的,我们必须通过挂载驱动器来实现。受Windows的影响,我觉得这一点很不好理解。不过还是先学会挂载方法再说,通过mount和umount实现挂载和卸载。理解了挂载命令后,我们就可以用mount命令挂载NFS了,具体的#mount  –t  nfs  localhost:/opt/root  /mnt ,在此,我觉得有必要解释一下命令,这样有助于我理解这个过程,其中 –t 表示挂载类型,即 nfs ;localhost指定可共享的用户,可以修改为其他机器的ip地址,以便其它机器对文件的共享;/mnt就是挂载的文件。当然了,在进行上面的操作之前,必须对要共享的目录在Nfs Service Configuration 对话框进行正确设置。用徐老师的话总结一下“NFS服务很重要”!

最后主要编程语言和Linux下的编程与调试,讲到编程语言,要对编程语言进行分类的话,分类方法很多,徐老师在课堂上重点讲解了,编译性语言与解释性语言的区别,原程序直接运行叫解释性语言,而要编译生成机器代码的叫编译性语言,java每次运行都要解释和编译,它要运行在java虚拟机上,说这些好像用处不大,但对于理解解释性、编译性语言的区别还是很有帮助的。Gcc与gdb是Linux下的编译工具和调试工具,文件编译过程大致分为预编译、编译、汇编、连接这四个过程,每个过程生成相应的文件。Gdb其实一点不神秘,稍微有编程经验的人很快就能理解它的使用过程,它和VC++中的调试器一样,实现对程序执行(run)、设置断点(break)、单步调试(step、next)、显示变量值或表达式值(print)等,当然理解不等于掌握,那还要在以后的编程中多加练习,熟能生巧!

Makefile可能是这门课中接触的最不好懂的一个知识点,依我个人理解,编写Makefile的目的是在多模块(模块量很大很大)程序设计时,为不重复编译未修改的原程序以提高编译效率和工作效率的一种手段。Makefile文件是按照依赖树编写的,它是树型结构,呈现出来的是一种递推关系,说的太专业自己都不能理解,简单的说,我把ELF、*.o、*.c文件看做树的三级,ELF作为根,*.o作为树干,*.c作为叶子,ELF依赖于*.o的变化,*.o依赖于*.c的变化,好像还没把问题说清楚,这么说吧,当叶子*.c修改了,即*.c是最新的,根据依赖关系,相应的*.c需要重新编译生成*.o,*.o又重新生成ELF,最后使得ELF为最新的。这样好像说清楚了点。这只是对依赖树的简化理解,这个依赖关系可以很复杂,复杂到难以理解的程度。
相关阅读 更多 +
排行榜 更多 +
阿克里危机手机版下载

阿克里危机手机版下载

飞行射击 下载
贪婪洞窟重生手游下载

贪婪洞窟重生手游下载

角色扮演 下载
贡贡托儿所手机版下载

贡贡托儿所手机版下载

休闲益智 下载