当前位置: 首页 > news >正文

嵌入式学习--LinuxDay04

嵌入式学习--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自动变量

$< 第一个依赖名称

$@ 目标文件完整名称

$^ 所有依赖名称

最终

相关文章:

  • Cadence23中的一些设置
  • MAC-Win11虚拟机双VPN环境内网穿透解决思路
  • 【分布式微服务云原生】Dockerfile命令详解
  • OJ在线评测系统 后端判题机架构搭建 使用原生实现Java安全管理器环境隔离
  • 付费计量系统标准化未来展望
  • 【源码】询比价管理系统,招投标采购管理系统
  • 【滑动窗口算法】——定长滑动窗口——Python(附题)
  • vue2 将页面生成pdf下载
  • MYSQL-查看函数创建语句语法(五)
  • Ubuntu/Debian网络配置(补充篇)
  • 解决方案:如何区分python里面绝对路径跟相对路径的不同
  • SIP 会议信令
  • Android studio安装问题及解决方案
  • TypeScript高级内容
  • vue中使用exceljs和file-saver插件实现纯前端表格导出Excel(支持样式配置,多级表头)
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [笔记] php常见简单功能及函数
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【React系列】如何构建React应用程序
  • java8 Stream Pipelines 浅析
  • js ES6 求数组的交集,并集,还有差集
  • mongodb--安装和初步使用教程
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Webpack 4x 之路 ( 四 )
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • ​Java基础复习笔记 第16章:网络编程
  • ​马来语翻译中文去哪比较好?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (备忘)Java Map 遍历
  • (二)学习JVM —— 垃圾回收机制
  • (二十四)Flask之flask-session组件
  • (回溯) LeetCode 131. 分割回文串
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (四)图像的%2线性拉伸
  • (五)activiti-modeler 编辑器初步优化
  • (五)网络优化与超参数选择--九五小庞
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)可以带来幸福的一本书
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net IE10 _doPostBack 未定义
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .net wcf memory gates checking failed
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .netcore 获取appsettings
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .sdf和.msp文件读取
  • .考试倒计时43天!来提分啦!
  • @Autowired注解的实现原理
  • @JoinTable会自动删除关联表的数据
  • [000-01-018].第3节:Linux环境下ElasticSearch环境搭建