1.Linux系统介绍

01.Linux系统发展

001.从Unix开始

  • Unix发展史:
    – 60年代,批处理、Multics系统
    – 1969年,Thompson&Rithie修改Multics,Unix雏形初现
    – 1973年,重写内核
    – 70年代,Unix开始飞速发展

  • Unix的问题与自由软件:
    – Unix价格昂贵
    – 1984年,不得向学生提供代码,Tanenbaum编写了Minix,用于教学
    – 1984年,Stallman开始GUN项目,创立自由软件基金会

  • 自由软件:
    – 自由使用
    – 自由修改
    – 自由发表
    – 公开源码

002.Linux

  • 诞生(1991年)
    – 芬兰,赫尔辛基大学
    – Linus,基于gcc与bash开发Linux内核
    – 3000行代码

  • Linux=内核+应用程序+界面

    • 内核版本
      – 1994年,正式推出1.0版
      – 2019年,推出5.0版
    • 查看版本命令
      – uname -a
      – cat /proc/version
    • 主版本.此版本.修订版本——编译次数
      系统信息
      地址:
      – 192-localhost
      – 168.253.128-localdomain
      内核:
      – 5-版本号
      – 3-应用程序次版本号(奇数为验证版本,偶数为稳定版本。Fedora是为RHEL做测试的系统)
      – 7-修订次数
      – 301-联编次数
      – fc31-Fedora第31版
  • 界面
    – Xfce
    极简界面
    – Workstation
    通用版本,gomne界面
    – KDE
    Windows界面
    – Cinnamon
    较新

02.常见Linux系统

001.发行版本

  • RHEL
    基于服务器的版本,服务、维护付费
  • CentOS
    对RHEL源码再编译的社区版本
  • Fedora
    版本较新,激进,适合个人用
  • Debian
    社区用户支持,更新较慢,技术较旧,较可靠
  • Ubuntu
    Debian的一个分支
  • SUSE
    德国,漂亮;社区人数少

002.获取Linux版本

  • 官网
  • 国内镜像
    – 各高校镜像
    – 主要公司镜像

003.Linux安装

获取安装镜像

  • 选择网站
    – 中科大http://mirrors.ustc.edu.cn
    – 阿里云http://developer.aliyun.com/mirror
  • 选择版本
    – 点击“获取安装镜像”

选择安装方式

  • 独立安装
    – 单系统
    – 双系统
    先装Windows,再装Linux
  • 虚拟机安装

03.VM虚拟机安装

  • 安装VM虚拟机
  • 虚拟机设置
    – 虚拟磁盘
    用一个文件来模拟,性能有损失,空间大小可以大于物理磁盘,实际上用多少占多少
    – 使用物理磁盘
    一次分配所有空间,而且可能会被物理机破坏
  • 虚拟网络设置
    – NAT模式
    虚拟机和主机用的是同一个网卡,做了一个地址转换
    虚拟机可以访问互联网,但不能访问主机
    – 仅主机模式
    做网络测试用,虚拟机可以和主机通信,就像一个网络中的两个计算机
    但虚拟机不能访问互联网
    网络服务配置一般在这种模式下进行
    – 桥接模式
    集成了这两方面的优点,配置起来较为麻烦
  • Fedora安装流程
    1.选择Live
    2.在Live界面关闭网络
    3.选中文
    4.安装位置,有个对勾
    5.设置root密码
    6.网络名和主机名,默认localhost.localdomain
    7.创建用户(登录用户,root用户一般不登录系统)
    8.关闭网络时间
  • 安装后配置
    – 添加sudo用户
    — root用户原则上不登录系统,sudo就是以root身份来做,需要授权、验证对应的用户的口令,以此达到分权、防止root口令泄露的目的
    — 有些Linux默认创建的用户有sudo全部授权,而Fedora没有
    — root下的visudo命令,打开/etc/sudoers文件,可对其进行修改(只有visudo),100行加上一行在这里插入图片描述
    允许任何域中的任何一台计算机登录,执行任何一条命令
    who     where=(whom)    commands
    用户    主机=(以谁的身份) commands
    #用户配置可以是:
        username
        #uid
        %groupname
        %#gid
        user_alias
    #主机配置:
        ip
        hostname
        Netaddr
        host_alias
    #commands配置
        command #命令要绝对路径指定
        cmnd    #命令别名,灵活使用能提高效率
    -----------------------------------
    在sudo配置中,可能对多个用户配置多个相同命令,这时候可以使用别名来配置。
    
    #定义别名的方法:
    ALIAS_TYPE  NAME=item1, item2, item3, ...       NAME:别名名称,必须使用全大写字符;
            ALIAS_TYPE:
            User_Alias
            Host_Alias
            Runas_Alias
            Cmnd_Alias
                            
    例如:
        User_Alias  NETADMIN=tom, jerry
        Cmnd_Alias NETCMND=ip, ifconfig, route
        
        NETADMIN    localhost=(root)    NETCMND
    
    来源
    –修改软件源

04.Fedora的包管理

早期软件发布大型软件发布
可执行文件可执行文件
私有库文件私有库文件
公共库文件
第三方文件
关系简单关系复杂

001.RPM(RedHat Package Manage)

RPM包结构
- 二进制文件
- 库文件
- 配置文件
- 帮助文件

  • 获取RPM
    • 软件发行商提供
    • RPM网站
  • RPM常用参数
    • rpm -ivh
      i:install;v:view;h:进度条
    • rpm -e --nodeps
      e:erase卸载;nodeps:可选项,依赖关系出问题也强制删除
    • rpm -qa | grep 包名
      qa:查看所有
      比如:rpm -qa | grep “pyth*”
    • man rpm

002.YUM(YellowDog Update Modified)

已转为dnf,yum也会自动转为dnf

  • 管理RPM的前端工具

  • 自动下载、安装

  • 自动修改依赖关系

  • 下载位置(从网络上)
    – 由/etc/yum.repos.d中的配置文件决定
    打开目录/etc/yum.repos.d
    在这里插入图片描述
    打开最重要的文件fedora.repo
    国外数据源被注释

  • 常用参数

    • yum install <包名>
    • yum update <包名>
    • yum remove <包名>
    • yum check-update <包名>
  • 更新源

    • mirrors.ustc.edu.cn–》配置软件源–》Fedora源使用帮助
    • yum makecache

05.Linux中的C开发环境

001.安装

sudo yum install gcc/gcc-c++

002.组成

  • 编辑器
    – vi/vim
    – 文本编辑器
    – vs code(rpm)
    – qt
  • 编译器(gcc)
  • 调试器(gdb)

003.字符界面开发

  • 创建一个文件
    – vi abc.c
  • 编译
    • gcc abc.c生成可执行文件a.out
    • 指定文件名
      • gcc -c abc.c生成中间代码abc.o,o是output
        gcc -o abc abc.o链接生成可执行文件abc
      • 链接库文件
        在这里插入图片描述
        用系统中的库函数,要在头文件指定原型,编译后变为库的形式,调用库中的函数在链接时要指明库的名字
        – 查看链接方法:man sqrt
        在这里插入图片描述
        – 命令:gcc -o abc abc.o -lm
      • 链接当前目录的自定义文件
        • 不用头文件
          – vimx abc.c(有+寄存器的vim,可复制到系统剪贴板)
          #include <stdio.h>
          #include "myfunc.c"
          #include <math.h>
          
          int main()
          {
          	//计算值
          	int ret=0;
          	//待处理值
          	int data=100;
          	int a=0;
          	int b=0;
          
          	printf("Hello,world!\n");
          	ret=sqrt(data);
          	printf("ret=%d\n",ret);
          
          	a=add(100,200);
          	b=sub(1000,2000);
          	printf("a=%d,b=%d",a,b);
          
          	return 0;
          }
          
          – gcc -c abc.c
          – gcc -o abc abc.o -lm
        • 需要头文件
          – vim myfunc.h声明自定义函数
          在这里插入图片描述
          – vi abc.c改“myfunc.c”为“myfunc.h”
          – gcc -c abc.c生成abc.o
          – gcc -c myfunc.c生成myfunc.o
          – gcc -o abc abc.o myfunc.o -lm
          生成release版的可执行文件。若不改myfunc.c则abc.o、myfunc.o会出现上面两个函数的重复定义
    • make方法
      在调试或编译过程中,源代码一修改,都要重新处理,太麻烦了,用make命令,根据makefile文件,每次检查每个源文件是否有改变,如果有改变,就重新编译,否则不编译
      – makefile文件
      — 模式:
      <模块名>:<生成所需文件>
      –回车自动Tab–<生成方法>
      在这里插入图片描述
      – make命令:(默认)执行当前目录下的makefile文件,并且clean模块不执行(中间文件依然有)
      在这里插入图片描述
      – make clean
      在这里插入图片描述
  • 执行
    ./a.out或者./abc
  • 调试
    • 生成debug版的可执行文件
      gcc -g <源文件> -o <可执行文件> -l<库>
      gcc -g abc.c myfunc.c -o abc -lm
    • 开始调试
      gdb <可执行文件>
      gdb abc
      gdb
      • 列出源代码
        – list:从头开始每次列出10行
        – list <行号> :列出以指定的行号为中心的10行
        – list <行号> <行号>:列出两行之间的代码
      • 看程序执行结果
        run
      • 断点
        • 设置断点
          break <行号>,run命令跑到断点
          在这里插入图片描述

        • 删除断点
          – 先得到断点信息:info break
          在这里插入图片描述
          – delete breakpoint <断点编号>:delete breakpoint 1

        • 禁用/启用断点:disable/enable breakpoint <编号>

        • 查看变量信息:print <变量>
          在这里插入图片描述
          可以看到第一次查看变量的值为0,说明断点处的代码未执行

      • 单步运行
        • next:遇到函数不进入函数
          在这里插入图片描述
          – 多步:next <行数>
        • step:遇到函数进入函数
          在这里插入图片描述
          如果是系统函数一般不进入,如果是用户编写的函数则可以进入
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值