色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux開發_Makefile規則與Shell腳本語言

DS小龍哥-嵌入式技術 ? 2022-09-17 15:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【摘要】 介紹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=gcc
VPATH=./abc
app:print.o main.o sum.o
	$(CC) $^ -o $@
%.o:%.c
	$(CC) $< -o $@ -c
clean:
	rm ./*.o app -rf

2.?Makefile自動化編譯

需要創建3個目錄,每個目錄下各有一個.c一個.h,一個Makefile文件

在頂層目錄下創建一個Makefile文件,實現自動化編譯。

特殊符號:

冒號用法: <目標文件>:<依賴文件1> <依賴文件2> ….

OBJECT=main.o print.o sum.o
CC=gcc
VPATH=main:sum:print
CFLAGS=-Imain -Isum -Iprint
app:$(OBJECT)
	$(CC) $^ -o $@

??include 關鍵字

用法: include <路徑或者具體的文件>

任務3:Shell腳本語言

Linux下常用的腳本語言。

變量、數組、for、while、函數、運算符、if、……..

[root@wbyq /]# ls /bin/sh -l

lrwxrwxrwx. 1 root root 4 12月 27 2016 /bin/sh -> 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使用方式1
if [ 1 -eq 2 -o 1 -lt 5 ]
then
	echo "條件為真"
else
	echo "條件為假"
fi

#if使用方式2
if((1==2 || 1==1))
then
	echo "條件為真"
else
	echo "條件為假"
fi

#for循環的使用方式1
for i in 1 2 3 4 5
do
	echo "i=$i"
done

#for循環的使用方式2
for((i=0;i<5;i++))
do
	echo "i=$i"
done
#while循環的使用方式1
i=0
while [ $i -lt 5 ]
do
	#i=`expr $i + 1`
	let i=i+1+34-4   #算術運算
	echo "i=$i"
done
#while循環的使用方式2
i=10
while((i<15))
do
	((i++))  
	echo "i=$i"
done
#數組當做函數的形參進行傳遞
func()
{
	echo ${buff[0]}
	echo ${buff[1]}
	echo ${buff[2]}
	echo ${buff[3]}
}

buff[0]=a
buff[1]=b
buff[2]=c
buff[3]=d

func ${buff[*]}  #數組的傳遞
#獲取命令的執行狀態

#方式1 (獲取返回值)
data=`ls -l` 
echo "data1=$data"

#方式2 (獲取命令執行狀態)
ls -l
echo "data2=$?"

??Shell腳本練習:

1.?從鍵盤上輸入年份,判斷平年閏年。

2.?輸出9*9乘法口訣表

3.?冒泡排序。

#!/bin/bash
echo -n "請輸入排序數據的數量:" 
read max_cnt

echo -n "請輸入數據(輸入一個數據按下回車鍵)"

cnt=0
while [ $cnt -lt $max_cnt ]
do
	read buff[$cnt]
	#((cnt++))
	cnt=`expr $cnt + 1`
done
echo "數組的數據=${buff[*]}"
#實現冒泡排序
max_cnt=`expr $max_cnt - 1`

i=0
j=0
tmp=0
while [ $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`
done

echo "排序之后的數據=${buff[*]}"
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3689

    瀏覽量

    95223
  • Makefile
    +關注

    關注

    1

    文章

    125

    瀏覽量

    19712
  • Shell腳本
    +關注

    關注

    0

    文章

    36

    瀏覽量

    8240
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    樹莓派新手必看!在樹莓派上編寫和運行 Shell 腳本

    在本教程中,我將討論Shell腳本的基礎知識、它們的用途以及如何在RaspberryPi上編寫和運行Shell腳本。什么是Shell
    的頭像 發表于 03-25 09:28 ?439次閱讀
    樹莓派新手必看!在樹莓派上編寫和運行 <b class='flag-5'>Shell</b> <b class='flag-5'>腳本</b>!

    Linux從零到精通:最簡單的Shell腳本入門教程

    case語句 shell變量數組 shell腳本前言 |為什么學習shell編程 Shell腳本語言
    的頭像 發表于 12-05 09:56 ?1550次閱讀
    <b class='flag-5'>Linux</b>從零到精通:最簡單的<b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>入門教程

    微軟生成式AI腳本GenAIScript的安裝與配置

    GenAIScript 是一種結合了生成式人工智能(Generative AI,簡稱 GenAI)和腳本編寫能力的新型腳本語言
    的頭像 發表于 11-07 09:13 ?757次閱讀
    微軟生成式AI<b class='flag-5'>腳本</b>GenAIScript的安裝與配置

    Linux系統中shell命令解析

    shellLinux系統的用戶界面,提供了用戶與內核交互的一種接口,它接收用戶輸入的命令并到送到內核去執行,因此也被稱為Linux的命令解釋器。
    的頭像 發表于 11-05 15:40 ?923次閱讀

    TCSH shell 編程入門

    ICer從業人員最先需要掌握的語言,就是linux shell語言。TCSH是ICer使用最多的Shell
    發表于 11-01 10:45 ?0次下載

    shell腳本執行的三種方式及區別

    Linux系統中,Shell腳本是一種非常實用的工具,用于自動化執行一系列命令。Shell腳本可以大大提高工作效率,簡化復雜的任務。在這篇
    的頭像 發表于 08-30 15:24 ?2207次閱讀

    執行shell腳本的方式包括什么

    執行Shell腳本的方式有很多種,以下是一些常見的方法: 直接運行腳本文件 在命令行中,可以直接使用腳本文件的路徑來運行腳本。例如: ./s
    的頭像 發表于 08-30 15:17 ?760次閱讀

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫之變量

    變量是任何一種編程語言都必不可少的組成部分,變量用來存放各種數據。腳本語言在定義變量時通常不需要指明類型,直接賦值就可以,Shell變量也遵循這個規則。每一個變量的值都是以字符串的形式
    發表于 08-30 09:21

    飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫之變量

    變量是任何一種編程語言都必不可少的組成部分,變量用來存放各種數據。腳本語言在定義變量時通常不需要指明類型,直接賦值就可以,Shell變量也遵循這個規則。每一個變量的值都是以字符串的形式
    發表于 08-29 11:04

    shell腳本編寫之本地腳本的編寫和執行

    的使用可以參考下一節)將變量值輸出進行查看,如下圖,可以看到沒有輸出var的值;然后再使用source或. 進行腳本執行,再次查看var變量的值,可以看到成功輸出235,該方式執行腳本后的變量,沒有釋放,所以我們經常使用source來配置
    發表于 08-28 09:36

    【龍芯2K0300蜂鳥板試用】+3.移植lua到loongarch

    ,輸入$CC就可以編譯了,輸入loongarch64-linux-gnu-gcc *.c -o lua -lm -O3。生成可執行文件lua 將可執行文件拖到開發板中,并添加可執行權限,并執行lua 進入lua編輯,輸入命令行簡單對lua測試,打印一個字符串 接下來就可以
    發表于 08-18 03:31

    嵌入式學習-shell介紹

    輸出執行結果呈現給用戶;同時Shell也是一種解釋性的編程語言或者腳本語言開發容易可以在短時間內完成功能強大又好用的腳本,可以在不同的系統
    發表于 08-16 09:13

    shell基本介紹及常用命令之shell介紹

    輸出執行結果呈現給用戶;同時Shell也是一種解釋性的編程語言或者腳本語言開發容易可以在短時間內完成功能強大又好用的腳本,可以在不同的系統
    發表于 08-15 09:28

    語言RPA中有哪些優勢,可以提高開發效率?

    語言RPA提供了多種資源和工具來幫助用戶提高開發效率,以下是一些值得關注的點: 1、跨平臺兼容:火語言支持在Win, Mac, Linux上三端跨平臺運行,一個
    的頭像 發表于 08-07 13:40 ?670次閱讀

    關于Makefile自動生成-autotools的使用

    Linux應用開發中,編寫Makefile是一項必備技能,因為它定義了工程中所有文件的編譯順序、規則和依賴關系,決定了哪些文件需要編譯以及它們的編譯順序。 雖然對初級
    的頭像 發表于 07-25 15:50 ?1815次閱讀
    關于<b class='flag-5'>Makefile</b>自動生成-autotools的使用
    主站蜘蛛池模板: 欧美高清vivoesosexo18 | 伦理片在线线手机版韩国免费6 | 约艺术院校96年清纯白嫩 | 久久9精品区-无套内射无码 | 天津相声广播在线收听 | 青青草原伊人网 | 快播电影官方网站 | 解开美女胸衣2破解版 | 国产久青青青青在线观看 | 毛篇片在线观看 | 怡春院欧美一区二区三区免费 | 亚州精品永久观看视频 | 国产永久免费观看视频软件 | 国产精品XXXXX免费A片 | 亲胸揉胸膜下刺激视频网站APP | 国产传媒麻豆剧精品AV | 2021扫黑风暴在线观看免费完整版 | 成人人观看的免费毛片 | 中文字幕在线视频免费观看 | 夫妻性姿势真人做视频 | 国语自产偷成人精品视频 | 星空无限传媒视频在线观看视频 | 国产成人精品免费视频软件 | 99久久精品国产免费 | 国产亚洲精品欧洲在线视频 | 暖暖的视频完整视频免费韩国 | 免费观看亚洲视频 | 青娱乐视觉盛宴国产视频 | 无码欧美XXXXX在线观看裸 | 亚洲精品理论电影在线观看 | 国产亚洲精品在线视频 | 色偷偷网址 | 一区精品在线 | 伊人国产在线观看 | 男生互捏jiji的故事 | 男人J桶进男人屁股过程 | 久久亚洲一级α片 | 日韩亚洲国产中文字幕欧美 | 亚洲成人免费在线 | 日韩成人黄色 | 国产精品igao视频网网址 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品