嵌入式学习--LinuxDay04

news2024/11/18 11:37:47

嵌入式学习--LinuxDay04

shell脚本

1.1数组

1.1.1数组的赋值

1.1.2数组的调用

1.2函数

1.2.1函数的定义方式

1.2.2函数的调用

2.分文件编程

2.1源文件

2.2头文件

3.编译工具

3.1 gcc编译工具

3.2 gdb调试

4.make工具

4.1定义

4.2Makefile格式

4.3Makefile管理多个文件

4.4Makefile变量

4.4.1自定义变量

4.4.2预定义变量

4.4.3自动变量

shell脚本

1.1数组

1.1.1数组的赋值

1array=(1 2 3 4 5)

  1. array=($1 $2 $3 $4 $5) 命令行传参

3) read a b c

array=($a $b $c)

4)read -a array 终端输入数据数组

1.1.2数组的调用

array[i] 获取下标i变量i范围0~n-1

${array[i]} 通过下标获取元素

array[i]=200 数组元素重新赋值

${array[@]} 数组的所有元素

${#array[@]} 数组所有元素的个数

遍历数组

  1. echo ${array[@]}
  2. for ((i=0;i<${#array[@]};i++))

do

echo -n ${array[i]}

done

练习:用shell脚本实现冒泡排序

1.2函数

1.2.1函数定义方式

1function_name ()

{

命令表

}

2

function function_name ()

{

命令表

}

1.2.2函数调用

函数名 参数列表

#!/bin/bash
fun()
{
    echo "hello"
}

function fun1()
{
    NUM=`expr $1 + $2`
    echo $NUM
}

fun
fun1 1 2

函数内$1 $2表示的是传递的参数

2.分文件编程

2.1源文件

main.c //存放main函数

fun.c //存放其他功能函数

2.2头文件

包含头文件宏定义函数声明结构体共用体枚举typedef

例如

编译:gcc main.c fun.c

执行:./a.out

#include引用时“ ”与<>的区别:

< > :系统默认搜索路径下查找头文件

" " :当前目录查找找不到系统默认搜索路径下查找头文件

系统默认搜索路径?

/usr/include

/usr/local/include

源码ctrl

退回ctrl alt -

3.编译工具

3.1 gcc编译工具

预处理:#开头内容,展开头文件、替换宏定义、删除无用注释,不会检查语法错误

gcc -E xx.c -o xx.i

编译:检查语法错误,有错就报错,无错就继续生成汇编文件

gcc -S xx.i -o xx.s

汇编: 将汇编文件生成不可执行的二进制文件

gcc -c xx.s -o xx.o

链接: 链接库文件,生成可执行的二进制文件

gcc xx.o -o xx

gcc xx.c -o xx -->直接生成可执行文件

gcc xx.c --->a.out

3.2 gdb调试

gcc -g xx.c

gdb a.out

r: 运行代码

l: 查看文件

b 行号或者函数名:添加断点

info b:查看断点情况

d num(断点编号):删除断点

p 变量名:查看变量的值

s/n: 单步运行,s会进入子函数顺序执行;单步跳过,n不会进入子函数

c: 执行到下一个断点的位置

help:帮助

q: 退出

步骤:代码写好后,先通过gcc -g进行编译代码,没有错误后,可以通过gdb a.out进行调试,输入l查看文件内容,通过b设置断点,输入r进行运行,n或s进行单步调试,q退出

4.make工具

4.1定义

make:工程管理器

make工程管理器就是一个“自动编译管理器”这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作。

Makefile makefile 读取唯一配置文件

gcc hello.c fun.c ---->a.out

gcc -c hello.c -o hello.o

gcc -c fun.c -o fun.o

gcc xx.o -o xx

4.2Makefile格式

目标依赖

命令

注意:命令前必须TAB

gcc编译步骤可以按照如下步骤逆序Makefile文件

gcc -c xx.c -o xx.o 目标xx.o 依赖xx.c

gcc xx.o -o xx 目标xx 依赖xx.o

例如写一个test.c文件写一个Makeflie文件编译

使用make进行编译生成相应可执行文件

4.3Makefile管理多个文件

首先创建多个文件

:

写一个Makefile文件

4.4Makefile变量

4.4.1自定义变量

自定义变量一般大写,取变量$(变量名)

= 递归赋值按照递归方式展开

:= 直接赋值(当前为多少就固定是多少)

+= 追加赋值

?= 判断之前是否定义如果定义不再赋值否则重新赋值

4.4.2预定义变量

系统预先定义好的一些变量,可能有默认值可能没有默认

RM 文件删除程序的名称,默认值为rm -f

CC C编译器的名称,默认值为cc。

CPP C预编译器的名称,默认值为$(CC) –E。

CFLAGS C编译器的选项,无默认值。

OBJS 生成的二进制文件或目标文件,自己定义

4.4.3自动变量

$< 第一个依赖名称

$@ 目标文件完整名称

$^ 所有依赖名称

最终

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

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

相关文章

【笔记】X射线的衍射方向

X射线在晶体中的衍射&#xff0c;实质是大量原子散射波互相干涉的结果。 衍射花样有两个特征&#xff1a; 衍射方向&#xff08;衍射线在空间的分布规律&#xff09;&#xff1a;由晶胞的大小、形状和位向决定。 衍射强度&#xff1a;由原子的种类以及它在晶胞中所处的位置决…

56 门控循环单元(GRU)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录门控循环单元&#xff08;GRU&#xff09;门控隐状态重置门和更新门候选隐状态隐状态 从零开始实现初始化模型参数定义模型训练与预测 简洁实现小结练习 门控循环单元&#xff08;GRU&#xff09; 之前我们讨论了如何在循环神经网络中计算梯…

PREDATOR: Registration of 3D Point Clouds with Low Overlap

Abstract 这篇文章介绍了一种新的点云配准模型-Predator。该模型专注于处理低重叠的点云对&#xff0c;它更加关注于重叠区域的处理&#xff0c;其新颖之处在于一个重叠的注意块&#xff0c;作用是用于两个点云的潜在编码之间的早期信息交换。该模型大大提高了低重叠场景下的配…

AI跟踪报道第58期-新加坡内哥谈技术-本周AI新闻: OpenAI动荡时刻和Meta从未如此动人

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

深度学习与数学归纳法

最近发现&#xff0c;深度学习可以分为两个主要的阶段&#xff0c;分别是前向推理以及反向传播&#xff0c;分别对应着网络的推理和参数训练两个步骤。其中推理有时候也称为归纳推理。 在做参数训练的时候&#xff0c;本质上是在利用历史数据求网络参数的先验分布&#xff1b; …

leetcode每日一题day15(24.9.25)——公司命名

思路&#xff1a;首先如果没有相同的后缀&#xff0c;则无论只要不是相同的首字母交换都不会出现重复情况&#xff0c;如果有重复后缀&#xff0c;则还需多增加个不能和&#xff0c;首字符与另一相同后缀字串的首字符相同的字串交换。 主要矛盾已经明确&#xff0c;则可对矛盾…

MySql5.7.26安装和配置

一.下载&#xff1a; 地址MySQL :: Download MySQL Community Server 1、选择版本 根据自己需要选择32位或64位版本&#xff08;这里选择64位&#xff09;点击下载 进入到下载页面按下图操作 2.解压文件放置位置&#xff1a;这边将下载的文件解压到D:Software 下 解压后内部文…

Linux---文件io

1.系统调用 由操作系统实现并提供给外部应用程序的编程接口。(Application Programming Interface&#xff0c;API)。是应用程序同系统之间数据交互的桥梁。 C标准函数和系统函数调用关系。一个helloworld如何打印到屏幕。 man手册中一共有九卷&#xff0c;其中一卷就有讲到系…

快速了解graphql特点

graphql--快速了解graphql特点 1.它的作用2.demo示例2.1依赖引入2.2定义schema2.3定义GrapQL端点2.4运行测试2.5一些坑 今天浏览博客时看到graphQL,之前在招聘网站上第一次接触,以为是图数据查询语言, 简单了解后,发现对graphQL的介绍主要是用作API的查询语言,不仅限于图数据查…

目标检测系列(三)yolov2的全面讲解

YOLOv2&#xff08;论文原名《YOLO9000: Better, Faster, Stronger》&#xff09;作为该系列的第二个版本&#xff0c;对原始YOLO进行了显著的改进&#xff0c;进一步提高了检测速度和准确度。在精度上利用一些列训练技巧&#xff0c;在速度上应用了新的网络模型DarkNet19&…

个性化大语言模型:PPlug——让AI更懂你

在当今数字化转型的时代&#xff0c;大型语言模型&#xff08;LLMs&#xff09;已经成为了不可或缺的工具&#xff0c;它们在自然语言理解、生成和推理方面展现了非凡的能力。然而&#xff0c;这些模型普遍采用的是“一刀切”的方式&#xff0c;即对于相同的输入给予所有用户相…

828华为云征文|部署多功能集成的协作知识库 AFFiNE

828华为云征文&#xff5c;部署多功能集成的协作知识库 AFFiNE 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 AFFiNE3.1 AFFiNE 介绍3.2 AFFiNE 部署3.3 AFFiNE 使用 四、…

【深度学习】(10)--ResNet残差网络

文章目录 ResNet残差网络1. 传统卷积神经网络的问题1.1 梯度消失和梯度爆炸1.2 退化问题 2. 解决问题2.1 梯度消失与爆炸2.2 退化问题 3. 残差结构结构归纳 4. BN&#xff08;Batch Normalization&#xff09; 总结 ResNet残差网络 ResNet 网络是在 2015年 由微软实验室中的何…

ComfyUI 完全入门:必备插件

前言 大家好&#xff0c;我是每天分享AI应用的月月&#xff01; ComfyUI 是一个基于 Stable Diffusion 的AI绘画创作工具&#xff0c;最近发展势头特别迅猛&#xff0c;但是 ComfyUI 的上手门槛有点高&#xff0c;用户需要对 Stable Diffusion 以及各种数字技术的原理有一定的…

小麦生长状态检测系统源码分享

小麦生长状态检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

基于SpringBoot的新冠检测信息管理系统的设计与实现

文未可获取一份本项目的java源码和数据库参考。 国内外在该方向的研究现状及分析 新型冠状病毒肺炎疫情发生以来&#xff0c;中国政府采取积极的防控策略和措施&#xff0c;经过两个多月的不懈努力&#xff0c;有效控制了新发病例的増长&#xff0c;本地传播已经趋于完全控制…

万字面试题大模型面试,最全八股和答案

自ChatGPT开启大模型时代以来&#xff0c;大模型正迎来飞速发展&#xff0c;现在从事大模型开发相关工作可谓是处在时代的风口。那么大模型面试需要哪些技能和技巧呢&#xff0c;本文详细整理了全套的面试问题及答案&#xff0c;希望对大家有所帮助&#xff01; 目录 大模型&a…

如何让 Android 的前端页面像 iOS 一样“优雅”?

作者:方英杰&#xff08;崇之&#xff09; 最近在调研前端页面适配 Android 端异形屏的方案&#xff0c;调研过程中发现了一些比较有意思的点&#xff0c;本文主要是做一个总结。 一、提出问题 首先&#xff0c;我们需要知道 Android 上的前端适配面临着什么问题。 问题其实很…

视频怎么加字幕?视频加字幕的5种方法,小白进阶高手!

视频怎么加字幕&#xff1f;视频加字幕不仅可以添加内容的可读性&#xff0c;也避免很多语言错误&#xff0c;可以更-好地帮助观看者理解创作者的制作理念。对于视频创作的初学者而言&#xff0c;掌握几种简单易用的加字幕方法尤为重要。本文将详细介绍五种视频加字幕的方法&am…

一文速读 LLaMA3.2-Vision 模型的结构

随着 Meta 放出了 LLaMA3.2 系列模型&#xff0c;LLaMA 系列也是正式迎来了官方版本的多模态大模型 LLaMA3.2-Vision [1]。那我们就在本期内容中聊一聊 LLaMA3.2-Vision 模型的结构&#xff0c;希望对大家有所帮助。 相关代码位于 [2] 结论 先说结论&#xff0c;LLaMA3.2 的…