项目开发日报表
项目名称 | 【苏嵌实训-嵌入式 linux C 第 1 天】 |
---|---|
今日进度以及任务 | 介绍了传统开发模式和嵌入式开发模式的区别。介绍了一些linux常用命令。介绍了vim编辑器的用法 |
本日任务完成情况 (详细说明本日任务是否按 计划完成,开发的代码量) | 本日任务按计划完成,完成在vim下C语言程序的编写,编译,运行。 |
本日开发中出现的问题汇总 | 删除用户时出现 user xxx is currently used by process xxx问题 |
本日未解决问题 | 无 |
本日开发收获 | 了解了Linux系统的基本使用,熟悉了一些Linux常用命令的操作,掌握了在Linux编程开发了能力 |
其他 | 无 |
什么是嵌入式开发 :
嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,linux,android等。另外,用c,c++或汇编开发;用高级处理器,arm7,arm9,arm11,powerpc,mips,mipsel等,或加上操作系统也属于嵌入式的开发。
嵌入式系统和C语言的联系:
操作系统(包括内核、驱动等)是使用C语言和汇编编写的,Windows,UNIX,Linux都是这样的。绝大部分是C语言,极少情况使用汇编写的。
嵌入式系统的编写语言主要是C语言,部分底层代码会用到汇编语言。
首先C语言相比较其它的高级语言编程,其语言特点对于嵌入式开发也是最为适合的一个。C语言具有的特点:
C语言具有出色的可移植性,能在多种不同体系结构的软/硬件平台上运行。
C语言具有简洁紧凑、使用灵活的语法机制,并能直接访问硬件。
C语言具有很高的运行效率。
为什么不选择java语言?
java之类面向对象语言是编译器在后面增加大量的东西的才变成机器语言。换句话说,这样程序无法直接操作内存。比如你定义一个类,可能最终在内存中实现时,编译器已经加了大量附加东西。如父类数据结构,VT表指针之类。而且底层程序主要是操作寄存器和内存地址,必须要精确而直接操作它。C的结构和指针可以精确操作到这一些东西。
操作系统按软件范畴实时性要求分:
实时操作系统 (Real-time OS) 是相对于分时操作系统 (Time-Sharing OS) 的一个概念。在一个分时操作系统中,计算机资源会被平均地分配给系统内所有的工作。在分时系统中,各项任务需要花多长时间来完成,这一点并不重要;而在一 个实时操作系统之中,最关注的是每个任务在多长时间内可以完成。简单地说,实时和分时操作系统最大的不同在于 “时限(deadline)”这个概念。对实时系统,他的正确性不仅与系统的逻辑正确性相关,而且与系统响应时间相关,如果系统响应不能满足时限的要求,即使它能得到正确的输出,我们也只能说他是一个失败的响应。“软”意味着如果没有满足指定的时间约束并不会导致灾难性后果,而对硬实时系统来说却是灾难性的。
硬实时系统有一个刚性的、不可改变的时间限制,它不允许任何超出时限的错误。超时错误会带来损害甚至导致系统失败、或者导致系统不能实现它的预期目标。
软实时系统的时限是一个柔性灵活的,它可以容忍偶然的超时错误。失败造成的后果并不严重,例如在网络中仅仅是轻微地降低了系统的吞吐量。
二者的关系,不是大哥和小弟,"UNIX 是 Linux 的父亲"这个说法更怡当。之所以要介绍它们的关系,是因为要告诉读者,在学习的时候,其实 Linux 与 UNIX 有很多的共通之处,简单地说,如果你已经熟练掌握了 Linux,那么再上手使用 UNIX 会非常容易。
二者也有两个大的区别:
UNIX 系统大多是与硬件配套的,也就是说,大多数 UNIX 系统如 AIX、HP-UX 等是无法安装在 x86 服务器和个人计算机上的,而 Linux 则可以运行在多种硬件平台上;
UNIX 是商业软件,而 Linux 是开源软件,是免费、公开源代码的。
Linux 是一个类似 Unix 的操作系统,Unix 要早于 Linux,Linux 的初衷就是要替代 UNIX,并在功能和用户体验上进行优化,所以 Linux 模仿了 UNIX(但并没有抄袭 UNIX 的源码),使得 Linux 在外观和交互上与 UNIX 非常类似。
相比于 UNIX,Linux 最大的创新是开源免费,这是它能够蓬勃发展的最重要原因;而目前的 UNIX 大部分都是收费的,小公司和个人都难以承受。
正是由于 Linux 和 UNIX 有着千丝万缕的联系,所以人们把 Linux 叫做“类UNIX系统”
Ubuntu
Ubuntu 就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux操作系统。Ubuntu是一个相对较新的发行版,Ubuntu默认采用的GNOME桌面系统,如果你是一个KDE的拥护者的话,Kubuntu 同样适合你!Ubuntu的安装非常的人性化,只要按照提示一步一步进行,安装和Windows同样简便!并且,Ubuntu被誉为对硬件支持最好最全面 的Linux 发行版之一,许多在其他发行版上无法使用,或者默认配置时无法使用的硬件,在Ubuntu上轻松搞定。并且,Ubuntu采用自行加强的内核 (kernel),安全性方面更上一层楼。并且,Ubuntu默认不能直接root登陆,必须从第一个创建的用户通过su或sudo来获取root权限 (这也许不太方便,但无疑增加了安全性,避免用户由于粗心而损坏系统)。Ubuntu的版本周期为六个月,弥补了Debian更新缓慢的不足。而且具有人 气颇高的论坛提供优秀的资源和技术支持,固定的版本更新周期和技术支持,适于新手使用。是当前最流行的发行版之一。推荐使用
SUSE
SUSE是Novell公司的著名Linux发行版,自主开发的专业,易用的YaST软件包管理系也大受好评。SUSE是一个非常专业、优秀的发行版,一向以华丽的用户界面著称。使用方便,也是当前最流行的版本之一,适于新手使用。
Fedora
Red Hat分为两个系列:由Red Hat公司提供收费技术支持和更新的Red Hat Enterprise Linux(可用CentOS替代,是RHEL的克隆版,免费),以及由社区开发的免费的Fedora Core。FC的定位便是桌面用户。FC提供了最新的软件包,同时,它的版本更新周期也非常短,仅六个月。Fedora拥有数量庞大的用户,优秀的社区技 术支持,许多创新。是当前最流行的版本之一,适于新手使用
Debian
Debian 是迄今为止,最遵循GNU规范的Linux系统。dpkg是Debian系列特有的软件包管理工具,它被誉为所有Linux软件包管理工具(比如RPM) 最强大的!配合apt-get,在Debian上安装、升级、删除和管理软件变得异常容易。Debian具有优秀的网络和社区资源,强大的apt- get,许多发行版都是基于Debian的,最有影响力的发行版之一。不过Debian安装相对不易,stable分支的软件极度过时,不适于新手使用。
Gentoo
Gentoo 具有高度的自定制性:因为它是一个基于源代码的(source-based)发行版。尽管安装时可以选择预先编译好的软件包,但是大部分使用Gentoo 的用户都选择自己手动编译。所以Gentoo适合比较有Linux使用经验的老手使用。但是注意的是,由于编译软件需要消耗大量的时间,所以如果你所有的 软件都自己编译,并安装桌面系统则需要较长的时间。GENTOO是一个极有特色的发行版,优点是具有高度的可定制性,完整的使用手册,媲美Ports的 Portage系统,运行速度极快,适合“臭美”的高手使用。也是现在比较流行的发行版之一。不过缺点也明显:编译时耗时很多,安装缓慢,只适用于熟悉linux的用户,不适于新手使用。
Magic linux
Magic linux是有国内社区制作的Linux发行套件。对中文的支持非常好,安装好不要配置什么就可以使用了。系統稳定性好,拥有国内Linux中最漂亮的界 面,以及丰富的应用软件,以及一流的中文支持和易用性。国内的linux发行版中最有特色的一个,对国内用户最值得推荐的国内Linux发行版。适用于新 手使用,国内比较流行。
VirtualBox
它最早是德国一家软件公司InnoTek所开发的虚拟系统软件,后来被Sun收购,改名为Sun VirtualBox,性能有很大的提高,因为他是开源的,不同于VM,而且功能强大,可以在 Linux/Mac 和 Windows 主机中运行,并支持在其中安装 Windows (NT 4.0、2000、XP、Server 2003、Vista)、DOS/Windows 3.x、Linux (2.4 和 2.6)、OpenBSD 等系列的客户操作系统。假如你曾经有用过虚拟机软件的经历的话,相信使用 VirtualBox 不在话下。即便你是一个新手,也没有关系。VirtualBox 提供了详细的文档,可以助你在短期内入门。
VMware Workstation
不需要重开机就能在同一台电脑使用好几个OS。VMware主要的功能有:1.不需要分区或重开机就能在同一台PC上使用两种以上的操作系统。2.完全隔离并且保护不同OS的操作环境以及所有安装在OS上面的应用软件和资料。3.不同的OS之间还能互动操作,包括网络、周边、文件分享以及复制贴上功能。4.有复原(Undo)功能。5.能够设定并且随时修改操作系统的操作环境,如:内存、磁碟空间、周边设备等等。
Virtual PC
它能够让你在一台 PC 上同时运行多个操作系统,使用它你不用重新启动系统,只要点击鼠标便可以打开新的操作系统或是在操作系统之间进行切换。安装该软件后不用对硬盘进行重新分区或是识别,就能够非常顺利地运行你已经安装的多个操作系统,而且还能够使用拖放功能在几个虚拟 PC 之间共享文件和应用程序。
当我们想删除某个用户的时候,出现 user xxx is currently used by process xxx,可能的原因是你创建用户user1之后,使用su命令切换到user1用户下,之后又想删除user1用户,使用su root切换到root用户下,使用userdel user1。出现上述情况的根本原因在于切换回root用户之后,user1还被某个进程占用。
解决方案1:ctrl+d(退出当前用户)
第一次使用ctrl+d退出root用户,回到user1用户;第二次使用ctrl+d退出user1用户,此时会返回到root用户(再按ctrl+d退出登陆连接),此时使用userdel user1正常删除。
解决方案2
可以使用 sudo userdel -r -f xx 加两个参数,给他强制删除,之后可能出现警告:
userdel: warning: can’t remove /var/mail/wxt: No such file or directory
userdel: wxt home directory (/home/wxt) not found
/bin 二进制可执行命令
/dev 设备特殊文件
/etc 系统管理和配置文件
/etc/rc.d 启动的配置文件和脚本
/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序
/tmp 公用的临时文件存储点
/root 系统管理员的主目录(特权阶级)
/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。
/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里 /proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/var 某些大文件的溢出区,比方说各种服务的日志文件
/run 里面的东西是系统运行时需要的, 不能随便删除. 但是重启的时候应该抛弃. 下次系统运行时重新生成
/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。