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

目录

​编辑

一、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.lsls -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.gztar -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 fcitx4.在sougou官网下载 x86版本Linux平台deb安装包软件5.将其下载后拷贝到Ubuntu系统中6.安装软件sudo dpkg -i sougoupinyin*.deb7.配置搜狗输入法8.缺少qt的库:sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2sudo apt install libgsettings-qt19.重启系统 

1.8.安装vscode

    1.能够上网2.apt-get的源已经配置成功3.在vscode官网下载 x86版本Linux平台deb安装包软件4.将其下载后拷贝到Ubuntu系统中5.安装软件sudo dpkg -i code*.deb6.配置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://xiahunao.cn/news/3280189.html

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

相关文章

【中项】系统集成项目管理工程师-第9章 项目管理概论-9.1PMBOK的发展与9.2项目基本要素

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…

旷野之间30 - 创业者如何更好的获取VC

让我们来谈谈初创公司创始人如何获得资金——以及他们为什么没有获得资金。 很多初次创业的企业家都向我咨询如何帮助他们的公司获得资金。现在,我不再做这些了,但我确实认识很多风险投资 (VC) 和天使投资者,所以我问了他们中的很多人&#…

JavaWeb开发——Eclipse安装配置教程

一、安装 1.Eclipse官方下载网站:https://www.eclipse.org/downloads/packages/ 2.点击Eclipse IDE for Enterprise Java and Web Developers进行安装 3.按需求选择操作系统的版本 4.点击DownLoad 5.打开文件并解压 6.打开文件 7.打开程序 8.配置安装 出现以…

基于站点的中国6小时PM2.5数据集(1960-2020)

基于站点的中国6小时PM2.5数据集(1960-2020) 数据介绍 几十年来,PM2.5改变了地球上的辐射平衡,增加了环境和健康风险,但直到2013年才在中国得到广泛监测。历史长期 PM2.5具有高时间分辨率的记录是必不可少的&#xff0…

《代码大全》读书笔记-第5章 软件构建的设计

有人会说,设计不是真正的构建活动。但在小项目中,包括设计在内的许多活动都被认为是构建。有些设计更关注系统级问题,许多设计工作留给构建。有些大型项目设计非常详细,导致编码成为一项机械性劳动。小型项目的设计更多的是程序员…

【Kafka】对 kafka 消费程序客户端进行监控采集

前言 对于 Kafka 组件而言,我们通常会对 kafka 服务端添加一些监控,来确保服务的稳定性,虽然有 kafka-exporter 来对消费者进行监控,但是指标很少,对于生产者和消费者更细粒度的监控就无法做到了。只能将监控部署在客…

Java | Leetcode Java题解之第307题区域和检索-数组可修改

题目&#xff1a; 题解&#xff1a; class NumArray {private int[] tree;private int[] nums;public NumArray(int[] nums) {this.tree new int[nums.length 1];this.nums nums;for (int i 0; i < nums.length; i) {add(i 1, nums[i]);}}public void update(int inde…

C++(week15): C++提高:(三)计算机网络

文章目录 一、计算机网络基础1.协议概念2.分层模型3.协议格式(1)以太网帧格式(2)IP段格式(3)TCP/UDP数据报格式4.TCP协议(1)TCP协议的特点(2)三次握手(3)四次挥手(4)SYN攻击5.状态迁移图的解析:11种状态6.TCP通信状态与程序结合分析二、网络编程(Socket编程)1.网络编程基础2.字…

快速识别音频文件转成文字

一、SenseVoice概述 阿里云通义千问开源了两款语音基座模型 SenseVoice&#xff08;用于语音识别&#xff09;和 CosyVoice&#xff08;用于语音生成&#xff09;。 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测&#xff0c;有以下特点&#xff1a; 多语言…

数据结构与算法 - 数组

一、数组 1. 概述 定义&#xff1a;在计算机科学中&#xff0c;数组是由一组元素&#xff08;值或变量&#xff09;组成的数据结构&#xff0c;每个元素有至少一个索引或键来标识。 因为数组内的元素是连续存储的&#xff0c;所以数组中元素的地址&#xff0c;可以通过其索引…

手把手教你用家用电脑完成图片和视频AI去水印功能

一.效果展示 二.video-subtitle-remover源码地址 soda151314/video-subtitle-remover: 基于AI的图片/视频硬字幕去除、文本水印去除&#xff0c;无损分辨率生成去字幕、去水印后的图片/视频文件。无需申请第三方API&#xff0c;本地实现。AI-based tool for removing hard-cod…

随堂测小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;教师管理&#xff0c;试题信息管理&#xff0c;标签类型管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;考试成绩&#xff0c;试题信息&#xff0…

SOMEIPSRV_RPC_11: 字段的设定器和有效载荷

测试目的&#xff1a; 验证字段的setter方法是否按照规范要求&#xff0c;通过请求/响应调用实现&#xff0c;其中请求消息的负载包含期望的字段值&#xff0c;响应消息的负载包含已设置到字段的值。 描述 本测试用例旨在验证DUT&#xff08;Device Under Test&#xff0c;被…

【区块链+绿色低碳】碳低链 | FISCO BCOS应用案例

在碳中和、碳达峰国家战略的号召下&#xff0c;碳中和数字化、协同低碳的发展如火如荼。但是在金融业的实际场景应用中&#xff0c; 存在数据收集效率低、数据核查困难、服务单一等问题&#xff0c;痛点集中为两个&#xff1a;一是数据冗杂&#xff0c;可能会存在数据篡改&…

MySQL存储引擎和

MySQL存储引擎 在数据库中保存的是一张张有着千丝万缕关系的表&#xff0c;所以表设计的好坏&#xff0c;将直接影响着整个数据库。而在设计表的时候&#xff0c;最关注的一个问题是使用什么存储引擎。MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种…

LeetCode 144.二叉树的前序遍历 C写法

LeetCode 144.二叉树的前序遍历 思路&#x1f9d0;&#xff1a; 遍历很简单&#xff0c;但是我们需要开空间进行值的存储&#xff0c;结点个数也可以用递归进行统计&#xff0c;开好空间就可以用数组进行值的存储&#xff0c;注意下标要么用全局&#xff0c;要么指针解引用&…

Astro 实现TodoList网页应用案例

Astro 是一个现代化的静态站点生成器和前端框架&#xff0c;它具有独特的设计理念&#xff1a;岛屿架构。它允许开发人员使用组件化的方式构建内容优先的网站&#xff0c;将各种技术栈&#xff08;如React、Vue、Svelte等&#xff09;的组件无缝集成到同一个项目中。 1、创建项…

使用注意力机制的seq2seq

一、背景 1、机器翻译中&#xff0c;每个生成的词可能相关于源句子中不同的词&#xff0c;但是之前用的是最后一个RNN层出来的context。 2、加入注意力 &#xff08;1&#xff09;假设输入序列中有&#x1d447;个词元&#xff0c; 解码时间步&#x1d461;′的上下文变量是…

​LLM大模型从入门到精通(7)--企业大模型开发流程​

一、大模型项目开发的两种方式 2023年以来&#xff0c;随着ChatGPT的火爆&#xff0c;使得LLM成为研究和应用的热点&#xff0c;但是市面上大部分LLM都存在一个共同的问题&#xff1a;模型都是基于过去的经验数据进行训练完成&#xff0c;无法获取最新的知识&#xff0c;以及各…

最新Python编程、机器学习与深度学习应用

近年来&#xff0c;人工智能领域的飞速发展极大地改变了各个行业的面貌。当前最新的技术动态&#xff0c;如大型语言模型和深度学习技术的发展&#xff0c;展示了深度学习和机器学习技术的强大潜力&#xff0c;成为推动创新和提升竞争力的关键。特别是PyTorch&#xff0c;凭借其…