【1】 什么是嵌入式?

以计算机应用为中心,软硬件可裁剪的专用计算机系统(通用计算机系统windows 系统OS),对功耗体积成本都有特定的要求。
软件可裁剪:网络方面驱动程序可以删除
硬件可裁剪: 画PCB删掉 网口
范围: 小到周边大到航天
专用计算机系统: 京东仓库-智能分拣 北京无人公交车 上海送餐机器人
小爱同学 小度小度

操作系统 内核
windows NT内核
Ubuntu linux
macOS Unix
Android Linux
ios Unix
  • 为什么使用linux?
    开源 可移植性强 支持硬件众多

【2】 linux系统由来

1965 - Multics计划 300人同时登陆 失败了
1969 - 贝尔实验室 汤姆森肯 4周(unics) 2人同时登陆(太空旅行)
1973 - C语言风格Unix - 向大学生推广(收费) - systemV 伯克利分校 (TCP IP)
1984 - 理查德自由软件的思想 GNU计划(GNU is not unix) 遵循GPL协议(通用公共许可协议) bash(终端解析器) glibc(printf scanf)
1991 - linus - linux(开源 不收费-对用户收费对企业收费:高德)

Linux系统 - Ubuntu Redhat
linux内核? - 一段代码

  1. 查看内核版本

    uname -r
    cat /proc/version
    

    3.2.0-29-generic-pae
    主版本号.次版本号.修订次数-编译次数 - 关于内核的信息
    LXRLinux:
    https://lxr.missinglinkelectronics.com/linux/

  2. 查看Ubuntu版本

    cat /etc/issue
    
  3. Ubuntu – 人道主义 桌面性能优越 更新及时(用户体验感)
    Redhat – 服务器上 更新不频繁 但是稳定

  4. linux和Unix的区别

    1. linux开源的 自由软件 unix收费的 知识产权保护的传统商业软件
    2. Unix多数与硬件配套 Linux支持多种硬件平台
      (银行-IBM 民航-HP 电信-SUN)

【3】 Linux系统组成

应用层:

  • 内核层: 内核的五大功能
    进程管理
    文件系统
    内存管理
    设备管理
    网络协议
  1. 进程管理 什么是进程?是程序的一次执行过程 CPU面向的对象是进程
    宏观并行微观串行

    • 买手机 买电脑的几核是什么意思?
      4核 - 相当于有四个CPU
      CPU1-QQ CPU2-wechat CPU3-txt CPU4-google
      时间片轮询 – 系统对进程的调度
  2. 文件管理:windows硬盘分区 C Dpan

    Linux各个文件夹的具体含义

  3. 内存管理:申请释放内存 malloc

  4. 设备管理:设备驱动

  5. 网络管理:socket编程 TCP UDP
    ===============================
    硬件层 : 鼠标 键盘 USB 摄像头 硬盘 U盘

  • 0-4G虚拟内存 printf(%p) – 32位机器
    1G真实的物理内存: 能访问到的地址(寻址空间0x4000 0000 (0xbf8e319c))?
    0-3G(0xc000 0000) 用户空间
    堆 heap malloc
    栈 stack 系统自动开辟
    静态区
    .data 已初始化的变量
    .bss 未初始化的 一堆0 clear bss
    .text
    .ro (readonly)“hello”
    3-4G 内核空间 int - 32位地址 8G int int(内核补丁)

【4】 以前的一些知识
1. 打开终端
ctrl + shift + n 在打开基础上开一个新终端
ctrl + alt + t 直接开一个终端
2. 退出 exit
3. 字体调整
ctrl + shift + “+”
ctrl + “-”
4.

【5】 联网
1. ping www.baidu.com /firefox火狐浏览器 输入baidu.com 检查是否联网
2. 编辑 - 虚拟网络编辑器 - 还原默认设置
桥接:能够访问外网 Ubuntu和Windows有两个IP
仅主机:不能访问外网 Ubuntu和Windows通信
NAT模式: 能够访问外网 Ubuntu和Windows共用一个IP
3. 虚拟机 - 设置 - 网络适配器
4. 右上角的网络标号 - 编辑连接 - 全部删除 - ADD - SAVE
5. 重启虚拟机

【6】 软件安装相关 dpkg apt-get

  1. 常见的软件包后缀

windows - .exe
Androd - .apk
Ubuntu - .deb
redhat - .rpm

1)怎么复制文件到虚拟机 直接拖拽

mv '/var/run/vmblock-fuse/blockdir/3c361a65/sl_3.03-16_i386.deb' .

2)共享目录 共享文件夹
虚拟机 - 设置 - 选项 - 共享文件夹
右侧: 总是启用
选中 - 移除 - 添加 - 选一个主机的目录
//Ubuntu下共享目录: /mnt/hqfs/share
3)安装软件:

  1. 关防火墙 关杀毒软件

  2. 安装的时候 右键 以管理员身份运行

  3. 安装时候使用英文目录(账户中文也有影响)

  4. 常见的软件包后缀

sl_     3.03-    16_        i386                      .deb

软件名 主版本号 次版本号 架构(windows:X86-32位 X64-64位)

  1. dpkg 离线安装 安装的时候不依赖网络 安装的时候不检查依赖
    apt-get 在线安装 需要依赖网络 安装的同时会将依赖包一并安装上
  • 软件包出现之前怎么安装?
ls - 命令 - 可执行程序 - /bincd /bin   ls -l lsfile:查看文件信息file ls
ls: ELF 32-bit LSB executable, Intel 80386(可执行 32位 小端 文件 架构80386)
file a.out
a.out: ELF 32-bit LSB executable, Intel 80386

怎么能让a.out向ls一样执行?

sudo cp a.out /bin

./ – 在当前目录下

  1. dpkg
    安装 sudo dpkg -i sl_3.03-16_i386.deb(软件包全名)
    查看安装状态 sudo dpkg -s sl(软件名)
    Status: install ok installed
    执行sl(直接敲软件名) (man sl可以查看命令后面的参数)
    查看版本号 sudo dpkg -l sl
    软件包信息的安装目录 sudo dpkg -L sl
    卸载sudo dpkg -r sl
    配置文件一起删除 sudo dpkg -P sl
    [tips]

    1. 如何查看Ubuntu上安装的所有软件?
sudo dpkg -l
  1. 如果目录下有5个安装包 怎么一把安装?
  sudo dpkg -i *.deb
  1. apt-get 在线安装
  • 换源
    1)查找输入manager - update manager - downloadfrom
    2) 修改 /etc/apt/source.list文件
    sudo apt-get update

    • 如果出现错误
   /var/lib/apt/listssudo rm * -rf

下载并安装: sudo apt-get install 软件名

  sudo apt-get intsall sl  小火车sudo apt-get install oneko 猫咪鼠标sudo apt-get install cowsay 奶牛说sudo apt-get install cmatrix 屏保sudo apt-get install bastet 俄罗斯方块sudo apt-get install frozen-bubble 泡泡龙

卸载: sudo apt-get remove 软件名
清除安装包: sudo apt-get clean
清除的目录就是: /var/cache/apt/archives
只下载不安装 sudo apt-get download 软件名
下载源码 sudo apt-get source 软件名

[练习] 1.用apt-get安装的软件可以用dpkg卸载吗?
可以
2. 使用apt-get命令时,如果中断了安装(网络 关机),用户既不能重装也不能卸载?
1)检查依赖源 apt-get check
2)修复 apt-get -f install

【7】复习

  1. cd命令
    cd 相对路径 cd …/day1
    绝对路径 cd /etc
    cd ~ / cd 进入家目录
    cd / 进入根目录
    cd - 返回上一次你进入的目录
    cd … 切换到上一级
    cd . 切换到当前目录
    2) pwd 显示当前路径
    3) touch 文件名
    如果文件存在 更新时间戳
    如果文件不存在 创建一个新文件
    touch 1.c 2.c 3.c同时创建多个文件
    4) mkdir 创建目录
    mkdir -p 1/2/3 创建有层级关系的目录
    mkdir -m 0777 目录名 创建有权限的目录
    mkdir 1 2 3 同时创建三个目录
    5)cp复制
    6)mv 移动 重命名
    7)rm 文件名 删除文件
    rm -rf 目录 // -r:递归删除 -f:强制删除
    rm !(2.c) 删除除了2.c以外的所有文件
    rm *.c 删除所有的.c文件
    8)关机 重启
    sudo shutdown -h now //立即关机
    sudo shutdown -r now //立即重启
    sudo shutdown -h +10 “byebye” //定时10分钟之后关机并显示信息
    sudo shutdown -r +10 “byebye”
    //定时10分钟之后重启并显示信息
    sudo reboot //重启
  2. vi、vim
    其他: gedit nano
    命令行模式: 3YY DD P
    插入模式(编辑模式) : a i o
    底行模式:
    :w 文件名 保存内容到文件名
    :q 退出
    :! 强制
    : set nu 显示行号
    : set nonu 取消行号
    : nohl 取消高亮
    : n eg:vi test.c +8定位到某一行
    替换:
    :%s/旧字符串/新字符串/g
    :%s/abc/www/g 将文档中所有的abc替换为www
    :%s/abc/www/ 每行首次出现的abc替换为www
    :3,7s/abc/www/g 3-7行中所有的abc替换为www
    :3,7s/abc/www/ 3-7行中每行首个abc替换为www
    :4,s/abc/www/g4到最后一行中所有abc替换为www:4,s/abc/www/g 4到最后一行中所有abc替换为www :4,s/abc/www/g4到最后一行中所有abc替换为www:4,s/abc/www/ 4到最后一行每行首个abc替换为www
    10)history 历史记录
    history num : 显示num条记录
    【8】
  1. shell是一个命令行解析器:将用户的命令解析成操作系统能够明白的语言,实现人机交互
    2.格式: 指令 选项 参数
    3.分类: sh csh ksh bash
  2. 一行中输入多条命令 用分号隔开
    三要素之间要有空格隔开
    一条指令太长在一行之内没办法输完 \表示命令没结束

【9】 shell特殊字符

  1. 通配符
    touch a.c b.c c.c aa.c bb.c cc.c 1.c
    [...]:匹配其中的一个字符
    ls [ab].c — a.c b.c
    [ - ]:匹配一个指定的字符范围
    ls [a-c].c — a.c b.c c.c
    [^..]:除了其中指定的字符 均可匹配
    ls [^a-c].c — 1.c
  2. 管道 | 前一个命令的输出 作为后一个命令输入
    wc -w 文件名 显示文件的单词个数
    wc -l 文件名 显示文件的函数
    wc -c 文件名 显示文件字符数
    eg: ls | wc -w
  3. 输出重定向
    >file :将终端上的东西重定向到文件 file里 以新建的方式打开
    >> file : 以追加的方式打开
  4. 命令置换 `` 将一个命令的输出作为另一个命令的参数
    echo 123 echo "user is whoami"  -- user is whoamiecho "user is `whoami`" -- user is linux

【10】 系统维护命令

  1. man: man man(manaul)用户手册
    1 命令 : man 1 ls
    2 系统调用 : man 2 open
    3 库函数: man 3 printf
    5 文件规定: man 5 passwd

  2. su 切换用户

  • su root/susu -sudo 区别是什么?
    sudo : 权限管理机制 依赖于/etc/sudoers
    su root/su 切换之后只获得权限,不改变工作环境,su之后的目录依然是你用户端的目录
    su - 切换之后不仅获得了权限,并且目录成了真的root用户
  1. echo将内容输出到标准输出

  2. date 显示系统时间

  3. ctrl + l
    system(“clear”) 清屏

  4. 增加用户 (su root)

   adduser 用户名Adding user `haha' ... //添加用户Adding new group `haha' (1001) ... //添加组Adding new user `haha' (1002) with group `haha' ... //把用户加入组Creating home directory `/home/haha' ... //创建家目录Copying files from `/etc/skel' ... //拷贝模板文件Enter new UNIX password:  //输入密码 Retype new UNIX password: passwd: password updated successfullyChanging the user information for hahaEnter the new value, or press ENTER for the defaultFull Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] ysu haha // 能够切换表示用户增添成功
  • 新添加的用户不能使用sudo命令
  haha is not in the sudoers file.  This incident will be reported=su rootsudo chmod u+x sudoersvim /etc/sudoersroot    ALL=(ALL:ALL) ALLhaha    ALL=(ALL:ALL) ALLsudo chmod u-x sudoerssu hahasudo OK
   /etc/passwd 保存用户信息/etc/group  保存组信息文件/etc/sudoers sudo权限信息/etc/skel    创建用户的莫办文件/etc/shadow  保存密码的文件
  1. 删除用户(su root / sudo su root)
   deluser --remove-home 用户名//如果删除不成功ps aux | grep haha //筛选出所有使用haha的进程kill -9 PID        //杀死进程

退出终端,重新打卡一个重复上述操作

成功删除:

   Looking for files to backup/remove ...Removing user `haha' ...Warning: group `haha' has no more members.Done.su hahaUnknown id: haha

LinuxC高级_day1相关推荐

  1. LinuxC高级编程——线程间同步

    LinuxC高级编程--线程间同步 宗旨:技术的学习是有限的,分享的精神是无限的. 1. 互斥锁mutex 多个线程同时访问共享数据时可能会冲突.对于多线程的程序,访问冲突的问题是很普遍的,解决的办法 ...

  2. LinuxC高级编程——线程

    LinuxC高级编程--线程 宗旨:技术的学习是有限的,分享的精神是无限的. 一.线程基础 main函数和信号处理函数是同一个进程地址空间中的多个控制流程,多线程也是如 此,但是比信号处理函数更加灵活 ...

  3. LinuxC高级编程——进程

    LinuxC高级编程--进程 宗旨:技术的学习是有限的,分享的精神是无限的. 每个进程在内核中都有一个进程控制块( PCB)来维护进程相关的信息, Linux内核的 进程控制块是task_struct ...

  4. 嵌入式Linux编程基础ppt,嵌入式LinuxC高级编程.ppt

    <嵌入式LinuxC高级编程.ppt>由会员分享,可在线阅读,更多相关<嵌入式LinuxC高级编程.ppt(45页珍藏版)>请在装配图网上搜索. 1.嵌入式Linux C高级编 ...

  5. LinuxC高级编程

    linux C高级 一,软件包管理工具分类 sudo aptitude sudo synaptic dpkg 1,dpkg 相关命令dpkg -i <package >安装一个在本地文件系 ...

  6. ngrok服务器搭建_C/C++ Linux 后台服务器开发高级架构师学习知识路线总结

    前言: 小编也是从事c方面10多年的工作经验.今天跟大家分享一下我总结出来的一系列 C/C Linux后台服务器开发的学习路线.从Linux开发工程师-Linux后台开发工程师-Linux高级互联网架 ...

  7. C/C++ Linux 后台服务器开发高级架构师学习知识路线总结

    前言: 小编也是从事c方面10多年的工作经验.今天跟大家分享一下我总结出来的一系列 C/C Linux后台服务器开发的学习路线.从Linux开发工程师-Linux后台开发工程师-Linux高级互联网架 ...

  8. 总结如何从Linux开发工程师到Linux后台开发工程师再到Linux高级互联网架构师

    前言: 小编也是从事c方面10多年的工作经验.今天跟大家分享一下我总结出来的一系列 C/C Linux后台服务器开发的学习路线.从Linux开发工程师-Linux后台开发工程师-Linux高级互联网架 ...

  9. Linux C/C++后台开发高级架构师进阶指南-剑指腾讯T9

    C++后台开发是一个庞杂的技术栈,因为没有统一的开发框架并且应用行业非常广泛.所有涉猎广泛,这里就把C/C++++后台开发的技术点进行整理总结,看完以后,不会让你失望的. -------------- ...

  10. Redis 高级特性(4)— 单线程架构

    Redis 使用了单线程架构和 I/O 多路复用模型来实现高性能的内存数据库服务. 1. 单线程模型 开启三个 redis-cli 客户端同时执行命令.客户端 1 设置一个字符串键值对: 127.0. ...

最新文章

  1. 学习下ECharts 异步加载数据
  2. 三代测序知识学习----Sequel
  3. Intellij Idea生成serialVersionUID的方法
  4. CSDN粉丝可见回来了!
  5. Swoole跨域问题解决
  6. Redis Cluster 集群模式原理和动态扩容
  7. pymysql语法_pymysql的用法
  8. 推荐:iReaper - MSDN中文Webcast下载程序
  9. 如何用Veripacks替换构建模块
  10. 【课题总结】OpenCV 抠图项目实战(4)固定阈值抠图
  11. Arcgis Javascript那些事儿(五)--arcgis server发布自定义比例尺地图
  12. java中重写equals方法
  13. IDA中类似VS的Call stack函数调用关系视图
  14. 【5G系列】一文打尽 IMSI、TMSI、GUTI、P-TMSI、S-TMSI、LMSI、5G-TMSI、5G-GUTI、5G-S-TMSI
  15. 微信公众号怎么集赞服务器,【微信点赞】_微信怎么点赞如何集赞微信点赞活动新手必备点赞教程...
  16. 2020 年 11月 程序员工资统计,平均 14327 元
  17. Java媒体框架(JMF)
  18. 用条码标签打印软件制作快递单
  19. 联想开机按f2怎么修复系统图解_联想开机按f2然后F10才能进入系统
  20. 服务——DNS正向反向域名解析服务

热门文章

  1. 利用Adobe Photoshop 2020导入和批量输出论文中的图片
  2. ArcGIS重采样栅格后栅格数目居然不变(解决)
  3. matlab聚类画图怎么做,[转载]用MATLAB做聚类分析
  4. esp-idf的内存管理——tlsf之上的封装
  5. PHP+MySQL制作简单动态网站(附详细注释+源码)
  6. H264 encode and decode
  7. 《麦肯锡方法》读书笔记10
  8. 深入了解DSP和ARM的关系(相同与区别)
  9. 天龙八部稳定服务器,献给天龙八部Online的Fans们--职业玩家及所在服务器
  10. Qingdao Panda进阶之路