嵌入式学习Day17---Linux软件变编程

news2024/12/28 18:46:00

目录

​编辑

一、Linux 系统

1.1.Linux服务器

1.2.Linux嵌入式

1.3.Linux系统上的软件开发

        1.操作系统

        2.Linux内核

        3.man手册

 1.4.shell命令 

        1.基本命令

         2.文件查看命令

        3.文件查找命令

         4.压缩解压文件

        5.其他命令

        6.通配符

        7.管道

        8.重定向

1.5.虚拟机上网

        1.NAT模式

        2.桥接模式 

1.6.配置软件源

        ​编辑 ​编辑

 1.7.安装sougou输入法

1.8.安装vscode

1.9.安装命令

二、Linux系统文件 

三、I/O流

3.1.标注I/O流

3.2.特殊流

3.3.缓存

2.4.函数接口

        1.fopen(打开文件流)

         2.fclose(关闭文件流)

        3.setvbuf  (修改流的缓存类型)

        4.fgetc、fputc

四、总结


一、Linux 系统

1.1.Linux服务器

        开源、免费、运行速度快

1.2.Linux嵌入式

        Linux系统可裁剪

1.3.Linux系统上的软件开发

        1.操作系统

                屏蔽底层不同的硬件平台

        2.Linux内核

                Linux操作系统的核心代码,包括对CPU管理、硬件设备管理、内存管理、文件系统管理、进程调度管理;

                 Shell作用:
                       保护内核 
                       命令解释器

                用户直接操作内核:
                        不安全
                        接口功能复杂

        3.man手册

    1.标准命令
    2.系统调用
    3.库函数
    4.设备说明
    5.文件格式
    6.娱乐
    7.杂项
    8.管理员命令

 1.4.shell命令 

        1.基本命令

        1.ls
            ls -a 
            ls -l  
        2.mkdir 
        3.rmdir 
        4.touch 
        5.rm -rf 
        6.pwd 
        7.cp 
        8.mv 

         2.文件查看命令

        1.cat 文件名 
            查看文件中的内容
        2.grep 字符串 文件名
            在文件名对应的文件中查找字符串相关的行
        3.head -n 文件名
            查看文件中的前n行
        4.tail -n 文件名
            查看文件中的最后n行

        3.文件查找命令

        1.find 路径 -name 文件名 
            在路径下查找文件名对应的文件
        2.locate 文件名
            查找文件名对应的文件所在的路径 
        3.whereis 文件名
            查找已经安装的二进制文件所在路径

         4.压缩解压文件

                .tar.gz 
                .tar.bz2 

    压缩:
        tar -zcvf 文件名.tar.gz 文件名/*
        tar -jcvf 文件名.tar.bz2 文件名/*
    解压:
        tar -zxvf 文件名.tar.gz
        tar -jxvf 文件名.tar.bz2

        5.其他命令

        du -m/k 文件名          查看文件占用的空间大小(Mb/Kb)          
        echo 

        6.通配符

        *:匹配任意长度任意字符的文件名
        ?:匹配一位长度任意字符的文件名 
        [a-z]:匹配a-z之间的任意字符
        [1-9]:匹配1-9之间的任意字符

        7.管道

        将前面命令的输出作为后续命令的输入 
        ps -ef | grep bash 

        查看进程中与bash相关的进程

        8.重定向

        >  覆盖重定向
        >> 追加重定向

1.5.虚拟机上网

        1.NAT模式

                将虚拟机网络模式设置为NAT模式:

                点击虚拟机,然后点击设置

        找到网络设配器,切换位NAT

 

        配置ubantu网卡位自动获取IP地址

        打开网卡配置文件

                sudo vim /etc/network/interfaces

        将文件内容修改为如下形式
                auto lo 
               iface lo inet loopback 

              auto ens33 
              iface ens33 inet dhcp 
 

         重启网络服务

         sudo /etc/init.d/networking restart 

        使用ifconfig查看IP地址

 

        .测试与百度是否能够连通 

                ping www.baidu.com

                           
 

        2.桥接模式 

                需要手动配置网络IP

1.6.配置软件源

         1.点击"Ubuntu Software"
            2.对左上角图标右键"Software & Updates"
            3.DownLoads From选择 Other中的 China ali源
            4.点击close 

         

 

输入以下命令
        sudo apt-get autoclean
        清除旧源 

        sudo apt-get update 
        更新新源

        sudo apt-get install -f 
        重建软件源依赖关系 

 1.7.安装sougou输入法

    1.能够上网
    2.apt-get的源已经配置成功
    3.下载fcitx框架
        sudo apt-get install fcitx
    4.在sougou官网下载 x86版本Linux平台deb安装包软件
    5.将其下载后拷贝到Ubuntu系统中
    6.安装软件
        sudo dpkg -i sougoupinyin*.deb
    7.配置搜狗输入法
    8.缺少qt的库:
      sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2
      sudo apt install libgsettings-qt1
    9.重启系统 

1.8.安装vscode

    1.能够上网
    2.apt-get的源已经配置成功
    3.在vscode官网下载 x86版本Linux平台deb安装包软件
    4.将其下载后拷贝到Ubuntu系统中
    5.安装软件
        sudo dpkg -i code*.deb
    6.配置vscode 
        可以安装C开发相关插件

1.9.安装命令

二、Linux系统文件 

文件分类:
    1.block     b     块设备文件        按块扫描设备信息的文件
    2.char      c     字符设备文件      按字符扫描设备信息的文件 
    3.directory d     目录文件          保存或管理文件
    4.          -     普通文件          保存数据信息的文件(代码、图片、音视频、压缩包等)
    5.link      l     链接文件          指向其他文件的文件 
    6.socket    s     套接字文件        用于进程间通信 
    7.pipe      p     管道文件          用于进程间通信

三、I/O流

3.1.标注I/O流

stdio.h  
    主要操作普通文件 
    1.打开文件 
    2.读写文件 
    3.关闭文件 

3.2.特殊流

    stdin       标准输入流          行缓存
    stdout      标准输出流          行缓存
    stderr      标准错误流          不缓存

    gets、getchar、scanf是基于stdin实现的
    puts、putchar、printf是基于stdout实现的 
    perror是基于stderr

3.3.缓存

    1.全缓存    4096  4k 
        缓存区满刷新
        
        与文件建立的缓存一般为全缓存

        刷新条件:
            1.缓存区存满了刷新
            2.fflush函数接口刷新
            3.关闭流时会刷新
-----------------------------------------------------------------

    2.行缓存    1024  1k
        遇到\n刷新 

        与终端建立的缓存都是行缓存

        刷新条件: 
            1.缓存区满刷新 
            2.遇到\n刷新 
            3.fflush函数刷新 
            4.关闭流时会刷新

-----------------------------------------------------------------
    3.不缓存    0  0k
        立即刷新 

        刷新条件:
            1.立即刷新

            1.对设备的操作不允许缓存
            2.通信不允许缓存
            3.出错处理不缓存 

2.4.函数接口

        1.fopen(打开文件流)

FILE *fopen(const char *pathname, const char *mode);
      功能:
        打开pathname对应的文件并建立一个文件流
      参数:
        pathname:文件路径
        mode:打开方式
            r      只读             如果文件存在则只读打开
                                    如果文件不存在报错
            r+     读写             如果文件存在则读写打开
                                    如果文件不存在报错
            w      只写             如果文件存在则清0,只写打开 
                                    如果文件不存在则创建
            w+     写读             如果文件存在则清0,读写打开 
                                    如果文件不存在则创建
            a      追加只写         如果文件存在则追加只写打开 
                                    如果文件不存在则创建
            a+     追加读写         如果文件存在则追加读写打开 
                                    如果文件不存在则创建
      返回值:
        成功返回FILE*的指针
        失败返回NULL并且将错误码置位 

         2.fclose(关闭文件流)

int fclose(FILE *stream);
      功能:   
        关闭流 
      参数: 
        stream:文件流
      返回值:
        成功返回0 
        失败返回EOF(-1)

        3.setvbuf  (修改流的缓存类型)

 int setvbuf(FILE *stream, char *buf, int mode, size_t size);
      功能:
        改变流的缓存类型
      参数:
        stream:文件流
        buf:缓存区的首地址 
        mode:   
            _IOFBF  全缓存
            _IOLBF  行缓存
            _IONBF  不缓存
        size:缓存区大小
      返回值:
        成功返回0 
        失败返回非0 

        4.fgetc、fputc

int fgetc(FILE *stream);
    功能:
      从流中取出一个字符
    参数:
      strean:文件流指针
    返回值:
       成功返回该字符的ASCII
       失败或者读到文件末尾返回EOF(-1)

----------------------------------------------------------------

int fputc(int c, FILE *stream);
      功能:
        向流中写入一个字符 
      参数:
        c:写入的字符
        stream:文件流指针
      返回值:
        成功返回写入字符的ASCII码值
        失败返回EOF(-1) 

四、总结

        今天是2024年7月30日,已经过去半个月啦。今天学习了Linux系统的基本文件类型、内核、shell命名、网络配置、软件源配置以及软件安装,还有就是重要的Linux软件编程里的I/O流、函数接口。总体感觉编程难度提升了,不过继续加油!

        加油! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1960432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JS学习(变量、数据类型、运算符以及流程控制语句)

目录 一、变量 二、数据类型 三、运算符 四、类型转换 (1)字符串类型转为数字 (2)其他类型转为boolean(这些全部都是自动转换) 五、流程控制 一、变量 (1)var:声…

2024西安铁一中集训DAY26 ---- 模拟赛(最短路 + 实数域二分 + 线段树 + 并查集(平面图欧拉定理))

文章目录 前言时间安排与成绩题解A. 江桥的蓝紫灯(最短路)B. 江桥的破坏行动(实数域二分)C. 江桥的最小值(线段树)D. 江桥的山谷(并查集,平面图欧拉定理) 前言 感觉是做…

Android NDK 编译 libcurl支持https

最后在使用NDK中使用libcurl,由于不同的安卓设备,版本不一样;使用so时,会导致报错dlopen时找不到某函数或出错。 最后直接使用libcurl.a后,目前在几款盒子上测试均能正常工作。 libcurl需要支持https得提前编译两个库…

LLM评估 | 大模型评估方法调研--论文解读(持续更新ing!!!)

目录 LLM-based NLG Evaluation: Current Status and ChallengesAdaptEval: Evaluating Large Language Models on Domain Adaptation for Text SummarizationThe Potential and Challenges of Evaluating **Attitudes, Opinions, and Values** in Large Language ModelsEvalLM…

揭秘高效语音转文字工具:让沟通更便捷

嘿,各位办公室的小伙伴们,今儿咱们来聊聊那些能让咱们文员生活大变样的神器——特别是那些能把咱们嘴里嘟囔的话儿,瞬间变成电脑里整整齐齐文字的语音转文字工具。说起来,自从有了这些宝贝,我感觉自己都快能飞起来了&a…

VUE 3.0 如何新建项目 详细教程 附环境搭建 推荐

本人新入手一台电脑,需要安装各种环境配置,顺便把过程记录一下,方便自己以后查看,也欢迎大家参考交流。 目录 一、环境搭建: 1.Node.js安装 2.国内淘宝镜像设置 3.安装vue 环境 二、新建vue项目 1.vue脚手架新建…

昇思25天学习打卡营第21天|FCN图像语义分割案例:从数据集下载到模型推理

目录 MindSpore 版本管理与数据集下载准备 图像分割数据集的定义、处理与获取 训练集数据的图像展示 基于 MindSpore 的 FCN8s 图像分割模型定义 图像分割模型的预训练模型加载与评估指标定义 基于 CPU 的 FCN8s 模型训练配置与准备 FCN8s 模型的权重加载与评估数据集的评…

大模型系列5--卷积神经网络

卷积神经网络 1. 背景2. 架构2.1. 卷积2.1.1. 单卷积层(多Channel输出)2.2.2. 多层卷积(卷积堆叠)2.2.3. 卷积关键参数2.2.4. 卷积常用计算公式 2.2. 池化层(pooling) 3. 经典网络结构3.1. VGG-163.2. ResN…

燃气安全无小事,一双专业劳保鞋让你步步安心!

燃气作为我们日常生活中不可或缺的能源之一,为我们的生活提供了极大便利,其安全性往往被忽视在忙碌的日常生活背后。然而,燃气事故一旦发生,后果往往不堪设想,轻则财产损失,重则危及生命。因此,…

【Linux】全志Tina配置AB区分区升级包

一、文件位置 V:\f1c100s\Evenurs\f1c100s\tina\target\allwinner\generic\configs\sw-subimgs-ab.cfg 二、文件内容 三、介绍 在第七行,可以设置产生的升级包是a区或是b区,使用ab区的名称来区分,ab区名称查询方法详见文章: …

angular入门基础教程(八)表单之双向绑定

绑定表单数据 为了让表单使用 Angular 的特性实现数据绑定,需要导入 FormsModule。 这个比 vue 要繁琐点,不复杂,但是比 react 的自己手动实现要方便,ng 帮我们实现了双向绑定 import { Component } from "angular/core&qu…

金蝶云星空历史库存信息批量计算生成

文章目录 金蝶云星空历史库存信息批量计算生成业务背景需求背景参考开发步骤创建单据《历史库存信息》界面表结构需要生成日期库存信息的日期范围存储为表创建日期表使用递归插入数据创建存储过程1,根据日期生成计算当日库存,生成《历史库存信息》创建存储过程2,根据日期范围…

Linux修炼之路之进程优先级,并行,环境变量

目录 一:进程优先级 二:并行并发 三:环境变量 接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧 一:进程优先级 1.基本概念 当使用ps -al指令时,就会显示用户所启动的所有进…

音视频入门基础:WAV专题(4)——FFmpeg源码中获取WAV文件音频压缩编码格式、采样频率、声道数量、采样位数、码率的实现

音视频入门基础:WAV专题系列文章: 音视频入门基础:WAV专题(1)——使用FFmpeg命令生成WAV音频文件 音视频入门基础:WAV专题(2)——WAV格式简介 音视频入门基础:WAV专题…

求职Leetcode题目(2)

1.柱状图中最大的矩形 据说这是2024年字节二面的题目,我感觉这道题跟接雨水有点类似,最重要的思路还是要找到什么时候能形成矩形的这么个情况,某个范围的矩形的高度,是由最短的柱形来决定的。 我们先整理一下,解决这道…

解决Firefox代理身份验证弹出窗口问题:C#和Selenium实战指南

引言 在使用Selenium和C#进行网页抓取时,遇到代理服务器的身份验证弹出窗口是一个常见的问题。这不仅会中断自动化流程,还会导致抓取任务失败。本文将提供一个实战指南,帮助开发者解决这个问题,并介绍如何在代码中设置代理IP、Us…

N32L406 移植MultiTimer教程 mdk5

MultiTimer 首先感谢开源作者 开源地址; github.com https://github.com/0x1abin/MultiTimer 简介 MultiTimer 是一个软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更优雅更便捷地管理程序的…

C++学习笔记之指针高阶

数组名 数组名字是数组的首元素地址。 一个指针变量保存了数组元素的地址。我们就称之为数组元素指针,及数组指针。 数组指针的本质是指针,指向数组中的某个元素的地址。 由于数组名可以代表数组收元素地址,数组元素是可以通过 数组名[下标] 的格式访问, 那么可以定义一…

红酒行业新动态:抢先了解未来趋势

在风起云涌的红酒市场中,每一次变革都如同飓风般席卷整个行业。今日,我们一同探讨红酒行业的新动态,特别是定制红酒领域的未来趋势。让我们以洒派红酒(Bold & Generous)为引,洞察行业前沿,预…

60、redis安装和部署

一、关系型数据库与非关系型数据库 1.1、关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上一般面向于记录。SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言&#xff0…