精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取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

    文章

    3521

    瀏覽量

    93272
  • Makefile
    +關注

    關注

    1

    文章

    125

    瀏覽量

    19145
  • Shell腳本
    +關注

    關注

    0

    文章

    36

    瀏覽量

    7944
收藏 人收藏

    評論

    相關推薦

    嵌入式學習-shell介紹

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

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

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

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

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

    Shell腳本檢查工具ShellCheck介紹

    ShellCheck是一個用于bash/sh shell腳本的靜態分析工具,可以輔助檢查腳本語法錯誤,給出建議增強腳本健壯性。
    的頭像 發表于 12-27 13:43 ?1601次閱讀
    <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>檢查工具ShellCheck介紹

    100個Linux Shell腳本總結

    不知道大家有沒有發現,會編寫shell腳本的運維,工資不會低,并且他的工作會很輕松!今天浩道跟大家分享每一個Linux運維應知必會的100個shell
    的頭像 發表于 12-05 09:28 ?949次閱讀

    javascript運行在什么的腳本語言

    avaScript 是一種運行在客戶端的腳本語言,也是目前最流行的腳本語言之一。它可以嵌入到 HTML 頁面中,通過瀏覽器來解釋和執行。這意味著它不需要獨立的編譯器,而是由瀏覽器動態執行,因此它是
    的頭像 發表于 12-03 11:33 ?751次閱讀

    腳本語言和編程語言的區別

    腳本語言和編程語言是計算機語言的兩個主要分類。盡管兩者都是用于編寫計算機程序的工具,但它們在設計和運行方式上存在一些顯著的區別。下面將詳細探討腳本語言和編程
    的頭像 發表于 11-22 14:33 ?2520次閱讀

    Shell基本介紹及目錄常用命令

    輸出執行結果呈現給用戶;同時Shell也是一種解釋性的編程語言或者腳本語言開發容易可以在短時間內完成功能強大又好用的腳本,可以在不同的系統
    的頭像 發表于 11-15 13:06 ?365次閱讀
    <b class='flag-5'>Shell</b>基本介紹及目錄常用命令

    linux命令行與shell編程實戰

    Linux命令行與Shell編程實戰主要涉及以下內容: Linux命令行基礎:學習Linux命令行的基本操作,如文件管理、進程管理、網絡配置等。熟悉使用命令行能夠提高工作效率,提升自己
    的頭像 發表于 11-08 10:57 ?623次閱讀

    linux命令和shell編程有什么聯系

    的命令,并提供了許多功能和特性,如變量、控制結構、函數等,這些功能和特性使得Shell編程成為可能。 其次,Linux命令是Shell編程的重要組成部分。通過使用Linux命令,用戶可
    的頭像 發表于 11-08 10:53 ?771次閱讀

    shell并行執行java腳本

    Shell是一種用于解釋執行命令的腳本語言,而Java是一種跨平臺的面向對象編程語言。在某些情況下,我們可能需要在Shell腳本中執行Jav
    的頭像 發表于 11-08 10:29 ?533次閱讀

    shell并行調用腳本

    Shell腳本中,可以使用一些技巧來實現并行調用。以下是幾種常見的方法: 使用后臺進程:在Shell腳本中,可以使用"command2 上述腳本
    的頭像 發表于 11-08 10:23 ?799次閱讀

    如何利用shell進行腳本程序的設計?

    利用Shell進行腳本程序的設計可以按照以下步驟進行: 選擇Shell解釋器:在Unix和Linux系統中,通常會默認安裝一個或多個Shell
    的頭像 發表于 11-08 10:17 ?432次閱讀

    shell腳本基本命令

    Shell腳本是一種可執行文件,它包含了一組用某種特定語言編寫的命令,這些命令可以被解釋器(如bash)執行。以下是一些常見的shell腳本
    的頭像 發表于 11-08 10:08 ?1735次閱讀

    常見的一些shell script規則

    shell script對于硬件嵌入式行業從業者來說應該是一個常用的工具,它是程序化腳本,是一種自動化管理linux的好工具了,所以對于嵌入式開發的工程師來說也是一個非常實用的工具。
    的頭像 發表于 11-07 10:29 ?414次閱讀
    常見的一些<b class='flag-5'>shell</b> script<b class='flag-5'>規則</b>