【摘要】 介绍linux下makefile编程知识点,shell脚本知识点。
任务1:静态库与动态库 [root@wbyq test]# arm-linux-gcc 123.c -o app_1
[root@wbyq test]# arm-linux-gcc -static 123.c -o app_2
linux下库文件存放的位置: /lib (存放的是动态库)
.so属于动态库, .a属于静态库
动态库称为共享库:gcc 123.c -o app
共享库:程序在运行的时候去调用函数(载入函数)。
静态库:相关的函数在编译的时候就已经拷贝到目标中。
任务2:makefile makefile :用于编写程序的编译规则。 make命令用于执行makefile文件。
make常用的选项参数:
-n :输出命令的执行过程,不执行名称
-s :隐藏命令本身。 在命令前面加上@符号,可以隐藏命令本身。
$(shell pwd)
cc :特殊变量,用于存放编译器。
练习:
1. makefile自动化编译
只是创建3个目录,每个目录下各有一个.c一个.h
在顶层目录下创建一个makefile文件,实现自动化编译。
cc=gccvpath=./abcapp:print.o main.o sum.o $(cc) $^ -o $@%.o:%.c $(cc) $ bash
变量定义使用
#!/bin/bash
abc=12345
echo abc=$abc
echo abc=${abc}
shell脚本传递参数 类似于c语言的argv argc
#!/bin/bash
echo cnt=$#
echo [0]=$0
echo [1]=$1
echo [2]=$2
echo [3]=$3
if语句语法规则
#!/bin/bash
a=10
b=20
if [ $a -eq $b ]
then
echo 123
else
echo 456
fi
计算字符串长度
#!/bin/bash
string=abcd
echo ${#string} #输出 4
数组语法
#!/bin/bash
buff=(1 2 3 4 5 6 7 8 9)
buff[0]=88
buff[1]=99
buff[100]=100
buff[88]=55
echo buff[0]=${buff[0]}
echo buff[1]=${buff[1]}
echo buff[2]=${buff[2]}
echo buff[100]=${buff[100]}
echo用法示例
#!/bin/bash
data=12345
echo data=${data}
printf语句格式
#!/bin/bash
printf %d\n 1234
printf %s\n 45678
从键盘上读取数据
#!/bin/bash
echo -n 输入数据: #参数-n 的作用是不换行, echo 默认是换行
read data #从键盘输入
echo 你输入的数据为: $data #显示信息
知识点总结:
#!/bin/bash#if使用方式1if [ 1 -eq 2 -o 1 -lt 5 ]then echo 条件为真else echo 条件为假fi#if使用方式2if((1==2 || 1==1))then echo 条件为真else echo 条件为假fi#for循环的使用方式1for i in 1 2 3 4 5do echo i=$idone#for循环的使用方式2for((i=0;i<5;i++))do echo i=$idone#while循环的使用方式1i=0while [ $i -lt 5 ]do #i=`expr $i + 1` let i=i+1+34-4 #算术运算 echo i=$idone#while循环的使用方式2i=10while((i<15))do ((i++)) echo i=$idone#数组当做函数的形参进行传递func(){ echo ${buff[0]} echo ${buff[1]} echo ${buff[2]} echo ${buff[3]}}buff[0]=abuff[1]=bbuff[2]=cbuff[3]=dfunc ${buff[*]} #数组的传递#获取命令的执行状态#方式1 (获取返回值)data=`ls -l` echo data1=$data#方式2 (获取命令执行状态)ls -lecho data2=$?
shell脚本练习:
1. 从键盘上输入年份,判断平年闰年。
2. 输出9*9乘法口诀表
3. 冒泡排序。
#!/bin/bashecho -n 请输入排序数据的数量: read max_cntecho -n 请输入数据(输入一个数据按下回车键)cnt=0while [ $cnt -lt $max_cnt ]do read buff[$cnt] #((cnt++)) cnt=`expr $cnt + 1`doneecho 数组的数据=${buff[*]}#实现冒泡排序max_cnt=`expr $max_cnt - 1`i=0j=0tmp=0while [ $i -lt $max_cnt ]do while [ $j -lt $max_cnt ] do if [ ${buff[$j]} -lt ${buff[`expr $j + 1`]} ] then tmp=${buff[$j]} buff[$j]=${buff[`expr $j + 1`]} buff[`expr $j + 1`]=$tmp fi j=`expr $j + 1` done j=0 i=`expr $i + 1`doneecho 排序之后的数据=${buff[*]}
影响手机流畅的因素是什么,处理器or系统
当魅族魅蓝note6遇上小米5X,详细对比由你评定谁才是千元机之王?
vivo 5G新机通过3C认证 充电器输出功率达55W
你有在使用小度人工智能音箱吗
艾睿光电实力护航博鳌亚洲论坛 红外黑科技筑牢海防“防护墙”
Linux开发_Makefile规则与Shell脚本语言
上位机开发是做什么的
意法半导体SiC MOSFET的路线图
关于蓝牙耳机的推荐,300左右的哪款产品比较好
芯动科技2023高端集成电路IP技术研讨会·北京站成功举办
智慧储粮 | 环境监测传感器助力护航
安科瑞数据中心末端配电的数字化方案及设备选型
零线和地线的区别
SD卡能否扩容提速 为啥轻薄本不用存储卡扩容?
基于物联网的智能交通信号监控,使用车辆计数
基于相位式测距技术实现目标标签定位的应用设计
虹科HK-GSG-8高级GNSS模拟器解决方案
追觅科技L10 Pro正式上线
智能语言武器攻击力怎么样
锂离子正极三剑客之一:钴酸锂