物联网工程实训-苏嵌嵌入式linux C实训 第 1 天

 

                                                                                      项目开发日报表

项目名称 【苏嵌实训-嵌入式 linux C 第1天】
今日进度以及任务 嵌入式开发概述及嵌入式Linux C项目演示、嵌入式环境安装与使用

本日任务完成情况

①、Linux用户管理命令:su sudo useradd usermod passwd
②、Linux文件管理命令:ls chmod touch cat gedit gcc
③、Linux目录命令:mkdir rmdir cp mv rm
④、Linux一点哲学:“一切皆为文件”、linux文件分类、Linux属性
⑤、文本编辑器:vim 三种模式:命令行模式---(按i/a)插入模式--(ESC)低行模式
⑥、修改vimrc

⑦、linux下简单c程序(如helloworld、计算1+...+n )  

⑧、linux下简单c程序 计算1-n中含9的数字个数、倒置字符串 (程序见附录)



 
本日开发中出现的问题汇总

1 嵌入式底层开发为什么选择c语言

答:

①C语言有出色的可移植性,能在多种不同体系结构的软/硬平台上运行。

②简洁紧凑,使用灵活的语法机制,并能直接访问硬件能够直接访问硬件的语言有:汇编和C语言汇编属于低级语言,难以完成一些复杂的功能,但是汇编比C语言访问硬件的效率更高。

所以,一般将硬件初始化的工作交给汇编,比较复杂的操作交给C语言。

③C语言具有很高的运行效率。

④面向过程

2、什么是实时性,什么是硬实时,什么是软实时

答:

实时性指时钟信号能够准确的定时,各处的时钟能够达到一致。
硬实时系统有一个刚性的、不可改变的时间限制,它不允许任何超出时限的错误。超时错误会带来损害甚至导致系统失败、或者导致系统不能实现它的预期目标。
软实时系统是一个柔性灵活的,它可以容忍偶然的超时错误。失败造成的后果并不严重,例如在网络中仅仅是轻微地降低了系统的吞吐量
3、Linux和Unix之间的关系

答:

二者的关系,不是大哥和小弟,"UNIX 是 Linux 的父亲"这个说法更怡当。之所以要介绍它们的关系,是因为要告诉读者,在学习的时候,其实 Linux 与 UNIX 有很多的共通之处,简单地说,如果你已经熟练掌握了 Linux,那么再上手使用 UNIX 会非常容易。

二者也有两个大的区别:

UNIX 系统大多是与硬件配套的,也就是说,大多数 UNIX 系统如 AIX、HP-UX 等是无法安装在 x86 服务器和个人计算机上的,而 Linux 则可以运行在多种硬件平台上;
UNIX 是商业软件,而 Linux 是开源软件,是免费、公开源代码的。

 

这里有详细介绍
 

4、Linux主流发行版本有哪些及特点

答:

红帽企业系统(RedHat Enterprise Linux, RHEL)
全球最大的开源技术厂商,全世界内使用最广泛的Linux发布套件,
提供性能与稳定性极强的Linux套件系统并拥有完善的全球技术支持。

社区企业操作系统(CentOS)
最初是将红帽企业系统“重新编译/发布”给用户免费使用而广泛使用,
当前已正式加入红帽公司并继续保持免费(随RHEL更新而更新)。

红帽用户桌面版(Fedora [Linux])
最初由红帽公司发起的桌面版系统套件(目前已经不限于桌面版),
用户可免费体验到最新的技术或工具,而功能成熟后加入到RHEL中。
 


国际化组织的开源操作系统(Debian)
提供超过37500种不同的自由软件且拥有很高的认可度,
对于各类内核架构支持性良好,稳定性、安全性强更有免费的技术支持。
 


基于Debian的桌面版(Ubuntu)
Ubuntu是一款基于Debian派生的产品,对新款硬件具有极强的兼容能力。
普遍认为Ubuntu与Fedora都是极其出色的LINUX桌面系统。


国产系统

国防科技大学发行麒麟kylin和中科院发行红旗RedFlag。

 

5、有哪些虚拟机软件 特点是什么

答:

Vmware Workstation,VMware公司的优秀虚拟机软件,VMware公司是全球桌面到数据中心虚拟化解决方案的领导厂商

 

Virtual Box,Virtual Box是Oracle公司旗下的免费开源虚拟机软件,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

 

Windows Virtual PC,微软公司旗下产品,Windows Virtual PC 是最新的 Microsoft 虚拟化技术。您可以使用此技术在一台计算机上同时运行多个操作系统,并且只需单击一下,便可直接在运行 Windows 7 的计算机上的虚拟 Windows 环境中运行许多生产应用程序。

 

VMware Player,VMware推出的免费小巧的虚拟机软件,精简版VMware Workstation

 

6、如何解决userdel删除用户的问题

答:

1:
使用vipw删除创建的用户
使用vipw -s 删除创建的用户组
2:
1.vi /etc/passwd添加pipetest❌506:506::/home/pipetest:/bin/bash(不一定是506,而是在最好一个行数目上加1)
2.vi /etc/shadow添加pipetest:!!:15056:0:99999:7:::(不一定所15056,而是在最后一行数目上加3)
3.mkdir /home/pipetest/cp /etc/skel/.bash* /home/pipetest/
4.userdel pipetest
 

 

7、罗列根目录中所以子目录的功能及存放的文件类型

答:

/bin 二进制可执行命令。
/dev 设备特殊文件
/etc 系统管理和配置文件
/home 用户目录的基点
/lib 标准程序设计库,又叫动态链接共享库
/sbin 系统管理命令,这里存放系统管理员使用的管理程序
/tmp 公用的临时文件存储点
/root 系统管理员的主目录
/mnt 系统提供这个目录就是让用户临时挂载其他的文件系统
/var 某些大文件的益出区
/usr 最庞大的目录,要用到的程序和文件几乎在这个目录
原文链接:https://blog.csdn.net/z1127805482/article/details/64922640
/bin:存放普通用户可执行的命令,系统中任何用户都可执行。
/boot:存放Linux内核文件以及开机菜单与开机所配置文件。
/dev:存放设备文件的存储目录,如硬盘、光驱等。
/etc:存放系统的配置文件,如用户账号密码、各种服务的起始文件等。只有root有权利修改。
/home:普通用户的主目录,每个用户在该目录下都有一个与用户同名的目录。
/lib:存放开机时用到的函数库,以及在/bin或/sbin下的命令会调用的函数库。
/media:存放可删除的设备,如软盘、光盘、DVD等设备都暂时挂载于此。
/mnt:暂时挂载某些额外的设备。
/opt:存放第三方软件。
/root:超级用户root的主目录。
/sbin:存放开机、修复、还原系统所需要的命令。
/srv:是一些网络服务启动之后,这些服务所需要取用的数据目录,如WWW服务。
/tmp:这是让一般用户或者正在执行的程序暂时放置文件的地方,任何人都能访问,需要定时清理。

 

8、自学20条linux命令

答:

  1. shutdown -h now 关闭系统(1)
  2. date 显示系统日期 
  3. ls -F 查看目录中的文件 
  4. ls -l 显示文件和目录的详细资料 
  5. ls -a 显示隐藏文件 
  6. ls *[0-9]* 显示包含数字的文件名和目录名 
  7. find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录 
  8. find / -user user1 搜索属于用户 'user1' 的文件和目录 
  9. find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 
  10. find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 
  11. find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件 
  12. find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限 
  13. find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备 
  14. locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令 
  15. whereis halt 显示一个二进制文件、源码或man的位置 
  16. which halt 显示一个二进制文件或可执行文件的完整路径 
  17. mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在 
  18. umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 '/ mnt/hda2' 退出 
    fuser -km /mnt/hda2 当设备繁忙时强制卸载 
  19. umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用 
  20. mount /dev/fd0 /mnt/floppy 挂载一个软盘 
  21. mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom 
  22. mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom 
  23. mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom 
  24. mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件 
  25. mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统 
  26. mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备 
  27. mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享 
  28. cat file1 | command( sed, grep, awk, grep, etc...) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中 
  29. cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中 
  30. grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug" 
  31. grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇 
  32. grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行
  33. cat file1 从第一个字节开始正向查看文件的内容 
  34. tac file1 从最后一行开始反向查看一个文件的内容 
  35. more file1 查看一个长文件的内容 
  36. less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作 
  37. head -2 file1 查看一个文件的前两行 
  38. tail -2 file1 查看一个文件的最后两行 
  39. tail -f /var/log/messages 实时查看被添加到一个文件中的内容  
  40. tar -cvf archive.tar file1 创建一个非压缩的 tarball 
  41. tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件 
  42. tar -tf archive.tar 显示一个包中的内容 
  43. tar -xvf archive.tar 释放一个包 
  44. tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下 
  45. tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包 
  46. tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包 
  47. tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包 
  48. tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包 
  49. zip file1.zip file1 创建一个zip格式的压缩包 
  50. zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包 
  51. unzip file1.zip 解压一个zip格式压缩包 

 

 

 

本日未解决的问题 暂无
本日开发收获 了解了行业目前状况;大致了解linux c开发流程  ;学会了简单的linux命令和操作
其他

 

附录:

//求1-n中含9的数的个数  
1 #include 
  2 int main() 
  3 { 
  4         int i,j,a,n; 
  5             int count=0; 
  6                 printf("inout your number 'n':\n"); 
  7                     scanf("%d",&n); 
  8                         for(i=1;i<=n;i++) 
  9                       { 
 10                                a=i; 
 11                                  while(a!=0) 
 12                                   { 
 13                                  j=a%10; 
 14                                  a=a/10; 
 15                                 if(j==9) 
 16                                  { 
 17                                   count++; 
 18                                   } 
 19                                  } 
 20                           } 
 21                             printf("9 have:%d\n",count); 
 22                                 return 0; 
 23 }

 

//倒置字符串
 
 1 #include "stdio.h"
  2 #include "string.h"
  3 void main()
  4 {
  5 int i;
  6 printf("input string: \n");
  7 char str[20], c;
  8 scanf("%s",str);
  9 
 10 int n=strlen(str);
 11 
 12 for(i=0;i

 

你可能感兴趣的:(工程实习,linux)