
从零开始学嵌入式-3.Linux操作系统使用及C高级编程
文章平均质量分 60
Linux操作系统使用及C高级编程
Jing's secret
头发少,样子老,背个双肩包像沙雕
展开
-
3.20 makefile的条件判断及函数使用
(单字符)、“*”(多字符)等。ifdef 判断是否定义过。ifeq 判断是否相等。ifneq 判断是否不相等。返回:空格分割的、存在当前目录下的所有符合模“PATTERN”的文件名。功能:列出当前目录下所有符合模式“PATTERN”格式的文件名。makefile函数。原创 2023-05-05 15:26:46 · 393 阅读 · 0 评论 -
3.19 makefile用法及变量(自定义变量、自动变量、隐含变量)
makefile重要性会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。“自动化编译”:一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率 提升编译效率:再次编译,只编译修改的文件。原创 2023-05-05 14:49:24 · 684 阅读 · 0 评论 -
3.18 GDB调试
GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。一般来说,GDB主要帮助你完成下面四个方面的功能:1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序(按着自己的想法运行)。2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3、当程序被停住时,可以检查此时你的程序中所发生的事。4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。原创 2023-05-05 10:43:19 · 514 阅读 · 2 评论 -
3.17 条件编译
GCC 原名为 GNU C 语言编译器(GNU C Compiler),只能处理 C 语言。但其很快扩展,变得可处理 C++,后来又扩展为能够支持更多编程语言,如 Fortran、Pascal、Objective -C、Java、Ada、Go 以及各类处理器架构上的汇编语言等,所以改名 GNU 编译器套件(GNU Compiler Collection)。GCC(特别是其中的 C 语言编译器)也常被认为是跨平台编译器的事实标准。原创 2023-05-05 09:58:04 · 725 阅读 · 0 评论 -
3.16 动态内存使用
通俗理解就是内存不够用了,通常在运行大型应用或游戏时,应用或游戏所需要的内存远远超出了你主机内安装的内存所承受大小,就叫内存溢出。一次内存泄露危害可以忽略,但若一直泄漏,无论有多少内存,迟早都会被占用光,最终导致程序crash。内存溢出(out of memory):是指程序在申请内存时,没有足够的内存空间供其使用。内存泄漏(memory leak):是指申请的内存空间使用完毕之后未回收。正确的时间地点申请空间,不用了就释放掉。返回值:成功 申请空间的首地址。参数:所需申请空间的大小。原创 2023-05-04 17:00:06 · 385 阅读 · 0 评论 -
3.15 内存管理
代码区: 存放函数体的二进制代码,由操作系统进行管理(cpu执行的机器指令,共享只读)全局区(全局静态区): 存放全局变量和静态变量以及常量(包含const)堆区: 由程序员分配和释放,若程序员不释放程序结束时由操作系统回收。栈区: 由编译器自动分配释放,存放函教的参数值,局部变量等。不同区域存放的数据,赋予不同的生命周期,带来了更大的灵活编程。可以用size查看文件占用空间大小。原创 2023-05-04 16:14:13 · 57 阅读 · 0 评论 -
3.14 C语言共用体和枚举
在C语言中,不同数据类型的数据可以使用共同的存储区域,这种数据构造类型称为共用体,简称共用,又称联合体。共用体在定义、说明和使用形式上与结构体相似。两者在本质上的不同仅在于使用你内存的方式上共用体的定义语法:union 共用体名 {共用体成员列表C语言中构造类型之一 在开发中,有些变量只有几种可能的取值,比如:一周有七天、一年有四季、在枚举的定义中,会将变量一一列出来。语法:enum 枚举名 {枚举成员列表 (,号隔开)原创 2023-05-04 15:47:00 · 497 阅读 · 0 评论 -
3.13 结构体嵌套、大小及位域
所谓的“位域”是把一个字节中的二进制位分为几个不同的区域,并说明每个区域的位数。这样就可以把几个不同的对象用一个字节的二进制位域来表示。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。平台原因(移植原因): 不是所有的硬件平台都能访问任意地址上的任意数据的;字节对齐主要是针对结构体而言的,通常编译器会自动对其成员变量进行对齐,以提高数据存取的效率;结构体中共同的变量可以单独放出来,单独封装一个结构体。结构体中的成员可以是另一个结构体。struct 位域结构体名 {原创 2023-05-04 14:23:01 · 726 阅读 · 0 评论 -
3.12 结构体指针
利用操作符->可以通过结构体指针访问结构体属性。struct 结构体名 *指针名;通过指针访问结构体中的成员。原创 2023-04-30 21:24:19 · 87 阅读 · 0 评论 -
3.11 C结构体及结构体数组
正式: 结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员” ,其描述了一块内存区间的大小及解释意义通俗: 结构体属于用户自定义的数据类型,允许用户存储不同的数据类型语法:struct 结构体名 {结构体成员列表。原创 2023-04-30 16:36:24 · 656 阅读 · 2 评论 -
3.10 结构体嵌套、大小及位域
nfs(Network File System)即网络文件系统,其基于UDP/IP 使用nfs能够在不同计算机之间通过网络进行文件共享,能使使用 者访问网络上其它计算机中的文件就像在访问自己的计算机一样。/nfs/rootfs *(rw,sync,no_subtree_check,no_root_squash) /nfs/rootfs:共享的目录;*:不限定客户端;rw:共享目录可读可写;sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;原创 2023-04-28 14:51:25 · 517 阅读 · 0 评论 -
3.9 Linux TFTP服务搭建及使用
TFTP(Trivial File Transfer Protocol)即简单文件传输协议是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件 传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69TFTP文件传输特点tftp使用客户服务器方式和使用UDP数据报,因此tftp需要有自己的差错改正措施。tftp支持小文件传输。大文件ftptftp没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。TFTP服务器的适用场景。原创 2023-04-28 14:13:23 · 84 阅读 · 0 评论 -
3.8 shell函数
return value表示函数的返回值,其中 return 是 Shell 关键字,专门用在函数中返回一个值;声明局部变量的格式: Local variable_name =value。function是 Shell 中的关键字,专门用来定义函数;statements是函数要执行的代码,也就是一组语句;全局作用域:在脚本的其他任何地方都能够访问该变量。局部作用域:只能在声明变量的作用域内访问。这一部分可以写也可以不写。原创 2023-04-28 11:14:15 · 450 阅读 · 0 评论 -
3.7 Linux shell脚本编程(分支语句、循环语句)
如果表达式为真, 则执行命令表中的命令;否则退出if语句, 即执行fi后面的语句。if和fi是条件语句的语句括号, 必须成对使用;命令表中的命令可以是一条, 也可以是若干条。如果表达式为真, 则执行命令表1中的命令, 再退出if语句;否则执行命令表2中的语句, 再退出if语句. 注意: 无论表达式是否为真, 都有语句要执行.test命令测试的条件成立时, 命令返回值为真(0),否则返回值为假(非0).if 表达式。else 命令表2。test命令使用总结。原创 2023-04-28 10:08:30 · 953 阅读 · 0 评论 -
3.6 Linux shell脚本编程(概念、变量、语句)
目录shell脚本概述shell脚本编写步骤第一个shell脚本文件shell脚本变量变量的介绍变量的作用变量的命名要求变量的分类用户自定义变量取值用户自定义变量-数组只读变量位置变量与预定义变量环境变量shell语句shell程序说明性语句(注释行)功能性语句(命令)结构性语句shell脚本概述 Shell脚本是利用 shell 的功能所写的一个程序。这个程序是使用纯文本文件,将一些 shell 的语法与命令(原创 2023-04-27 10:32:58 · 712 阅读 · 0 评论 -
3.5 Linux shell(进程管理、用户管理)
kill 命令向指定的进程发出一个信号signal,在默认 情况下,kill 命令向指定进程发出信号15,正常情 下,将杀死那些不捕捉或不忽略这个信号的进程。进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。PID是进程号 kill 命令向指定的进程发出一个信号signal,在默认情况下,kill 命令向指定进程发出。语法:passwd [-k] [-l] [u] [-f] [-d] [-S] username。原创 2023-04-26 11:18:18 · 507 阅读 · 0 评论 -
3.4 Linux shell命令(文件搜索、文件处理、压缩解压)
若需要网络传输文件时,就希望将其压缩成较小的文件,以节省在网络传输的时间。-exec 命令名称 {} 对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令。压缩文件也是将一组文件或目录保存一个文件中,并按照某种存储格式保存在磁盘上,所占磁盘空间比其中所有文件总和要少。将一个文件压缩成.gz格式的压缩文件,移植性好 这个命令没有归档功能,每次只能压缩一个文件。and:逻辑与,在命令中用 -a 表示,是系统缺省的选项,表示只有当所给的条 件都满足时,寻找条件才算满足。原创 2023-04-25 16:35:27 · 543 阅读 · 0 评论 -
3.3 Linux shell命令(权限、输入输出)
随着各式Linux系统的图形化程度的不断提高,用户在桌面环境下,通过点击、拖拽等操作就可以完成大部分的工作。然而,许多Ubuntu Linux功能使用shell命令来实现,要比使用图形界面交互,完成的更快、更直接。英文单词shell可直译为“贝壳”。“贝壳”是动物作为外在保护的一种工具。可以这样认为,Linux中的shell就是Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互- Shell是一个命令行解释器,它为用户提供一个向Linux内核发送请求以便运行程序的界面系统级程序。原创 2023-04-25 11:57:45 · 293 阅读 · 0 评论 -
3.2 软件包管理
Ubuntu采用集中式的软件仓库机制。安装修改等需要更改的需要加上sudo。如果不确定软件包类型时,可以使用。软件包的命令遵循以下约定。查看等不修改的不需要加。原创 2023-04-24 16:10:49 · 61 阅读 · 0 评论 -
3.1 Linux介绍环境配置
本质:是一个操作系统类型:分时操作系统(命令来了之后,通过CPU调度,让执行再执行)特点:多用户,多任务UNIX是一个强大的多用户、多任务操作系统、支持点多钟处理器架构全称:GNU/Linux //表示操作系统类别:操作系统内核 //基于UNIX特点:免费、开源、可靠、安全、稳定、多平台是一种免费使用和自由传播的类UNIX操作系统,其内核是由林纳斯.本纳第特.托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个多用户、多任务、支持多线程和CPU的操作系统、原创 2023-04-24 14:38:25 · 132 阅读 · 2 评论