哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux開(kāi)發(fā)_Makefile規(guī)則與Shell腳本語(yǔ)言

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

掃碼添加小助手

加入工程師交流群

【摘要】 介紹Linux下Makefile編程知識(shí)點(diǎn),Shell腳本知識(shí)點(diǎn)。

任務(wù)1:靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)

[root@wbyq test]# arm-linux-gcc 123.c -o app_1

[root@wbyq test]# arm-linux-gcc -static 123.c -o app_2

Linux下庫(kù)文件存放的位置: /lib (存放的是動(dòng)態(tài)庫(kù))

.so屬于動(dòng)態(tài)庫(kù), .a屬于靜態(tài)庫(kù)

動(dòng)態(tài)庫(kù)稱為共享庫(kù):gcc 123.c -o app

共享庫(kù):程序在運(yùn)行的時(shí)候去調(diào)用函數(shù)(載入函數(shù))。

靜態(tài)庫(kù):相關(guān)的函數(shù)在編譯的時(shí)候就已經(jīng)拷貝到目標(biāo)中。

任務(wù)2:Makefile

Makefile :用于編寫程序的編譯規(guī)則。 make命令用于執(zhí)行Makefile文件。

make常用的選項(xiàng)參數(shù):

-n :輸出命令的執(zhí)行過(guò)程,不執(zhí)行名稱

-s :隱藏命令本身。 在命令前面加上@符號(hào),可以隱藏命令本身。

$(shell pwd)

CC :特殊變量,用于存放編譯器。

練習(xí):

1.?Makefile自動(dòng)化編譯

只是創(chuàng)建3個(gè)目錄,每個(gè)目錄下各有一個(gè).c一個(gè).h

在頂層目錄下創(chuàng)建一個(gè)Makefile文件,實(shí)現(xiàn)自動(dòng)化編譯。

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自動(dòng)化編譯

需要?jiǎng)?chuàng)建3個(gè)目錄,每個(gè)目錄下各有一個(gè).c一個(gè).h,一個(gè)Makefile文件

在頂層目錄下創(chuàng)建一個(gè)Makefile文件,實(shí)現(xiàn)自動(dòng)化編譯。

特殊符號(hào):

冒號(hào)用法: <目標(biāo)文件>:<依賴文件1> <依賴文件2> ….

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

??include 關(guān)鍵字

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

任務(wù)3:Shell腳本語(yǔ)言

Linux下常用的腳本語(yǔ)言。

變量、數(shù)組、for、while、函數(shù)、運(yùn)算符、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腳本傳遞參數(shù) 類似于C語(yǔ)言的argv argc

#!/bin/bash

echo "cnt=$#"

echo "[0]=$0"

echo "[1]=$1"

echo "[2]=$2"

echo "[3]=$3"

??if語(yǔ)句語(yǔ)法規(guī)則

#!/bin/bash

a=10

b=20

if [ $a -eq $b ]

then

echo "123"

else

echo "456"

fi

??計(jì)算字符串長(zhǎng)度

#!/bin/bash

string="abcd"

echo ${#string} #輸出 4

??數(shù)組語(yǔ)法

#!/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語(yǔ)句格式

#!/bin/bash

printf "%d\n" 1234

printf "%s\n" "45678"

??從鍵盤上讀取數(shù)據(jù)

#!/bin/bash

echo -n "輸入數(shù)據(jù):" #參數(shù)-n 的作用是不換行, echo 默認(rèn)是換行

read data #從鍵盤輸入

echo "你輸入的數(shù)據(jù)為: $data" #顯示信息

知識(shí)點(diǎn)總結(jié):

#!/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循環(huán)的使用方式1
for i in 1 2 3 4 5
do
	echo "i=$i"
done

#for循環(huán)的使用方式2
for((i=0;i<5;i++))
do
	echo "i=$i"
done
#while循環(huán)的使用方式1
i=0
while [ $i -lt 5 ]
do
	#i=`expr $i + 1`
	let i=i+1+34-4   #算術(shù)運(yùn)算
	echo "i=$i"
done
#while循環(huán)的使用方式2
i=10
while((i<15))
do
	((i++))  
	echo "i=$i"
done
#數(shù)組當(dāng)做函數(shù)的形參進(jìn)行傳遞
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[*]}  #數(shù)組的傳遞
#獲取命令的執(zhí)行狀態(tài)

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

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

??Shell腳本練習(xí):

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

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

3.?冒泡排序。

#!/bin/bash
echo -n "請(qǐng)輸入排序數(shù)據(jù)的數(shù)量:" 
read max_cnt

echo -n "請(qǐng)輸入數(shù)據(jù)(輸入一個(gè)數(shù)據(jù)按下回車鍵)"

cnt=0
while [ $cnt -lt $max_cnt ]
do
	read buff[$cnt]
	#((cnt++))
	cnt=`expr $cnt + 1`
done
echo "數(shù)組的數(shù)據(jù)=${buff[*]}"
#實(shí)現(xiàn)冒泡排序
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 "排序之后的數(shù)據(jù)=${buff[*]}"
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    90

    文章

    3722

    瀏覽量

    97409
  • Makefile
    +關(guān)注

    關(guān)注

    1

    文章

    125

    瀏覽量

    20451
  • Shell腳本
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    智能顯示模塊支持腳本語(yǔ)言嗎?

    智能顯示模塊支持腳本語(yǔ)言嗎?
    發(fā)表于 02-26 11:18

    Linux Shell文本處理神器合集:15個(gè)工具+實(shí)戰(zhàn)例子,效率直接翻倍

    Linux 系統(tǒng)中,文本是數(shù)據(jù)交互的 “通用語(yǔ)言”—— 日志文件、配置文件、數(shù)據(jù)報(bào)表、程序輸出幾乎都以文本形式存在。手動(dòng)編輯文本不僅繁瑣,還容易出錯(cuò),而掌握 Shell 文本處理工具,能讓你用幾行命令完成批量篩選、數(shù)據(jù)提取、
    的頭像 發(fā)表于 02-03 15:42 ?2512次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>Shell</b>文本處理神器合集:15個(gè)工具+實(shí)戰(zhàn)例子,效率直接翻倍

    DR1平臺(tái)Linux應(yīng)用開(kāi)發(fā)指南:含GDB調(diào)試、Python及MQTT實(shí)戰(zhàn)

    本文為創(chuàng)龍科技DR1 系列評(píng)估板 Linux 應(yīng)用開(kāi)發(fā)手冊(cè),系統(tǒng)講解開(kāi)發(fā)環(huán)境搭建、GDB 調(diào)試、多類型應(yīng)用案例及 MQTT 通信實(shí)現(xiàn)。核心內(nèi)容包括 LinuxSDK 與工具鏈配置、GDB 遠(yuǎn)程調(diào)試
    的頭像 發(fā)表于 01-05 16:48 ?4768次閱讀
    DR1平臺(tái)<b class='flag-5'>Linux</b>應(yīng)用<b class='flag-5'>開(kāi)發(fā)</b>指南:含GDB調(diào)試、Python及MQTT實(shí)戰(zhàn)

    從小白到大牛:Linux嵌入式系統(tǒng)開(kāi)發(fā)的完整指南

    基礎(chǔ)強(qiáng)化:嵌入式開(kāi)發(fā)離不開(kāi)Linux 系統(tǒng)操作,需熟練掌握命令行(文件操作、進(jìn)程管理、權(quán)限配置)、Shell 腳本編寫、Makefile
    發(fā)表于 12-16 10:42

    Linux 編程語(yǔ)言盤點(diǎn):從內(nèi)核到AI的全棧選擇

    ,認(rèn)為那才代表未來(lái)。 其實(shí),這個(gè)問(wèn)題沒(méi)有標(biāo)準(zhǔn)答案。不同語(yǔ)言Linux 上的角色,就像工業(yè)系統(tǒng)里的不同模塊——各司其職,協(xié)同配合。 今天,我們從工業(yè)開(kāi)發(fā)者的視角,聊聊這個(gè)繞不開(kāi)的話題。 一、
    的頭像 發(fā)表于 11-06 17:05 ?742次閱讀

    e203仿真報(bào)Syntax error: \"&amp;\"unexpected錯(cuò)誤的原因

    “NO” 再試一下: ls -l /bin/sh 改成bash 再跑測(cè)試程序: 成功! 原因分析:dash和bash應(yīng)該是shell腳本語(yǔ)言的兩種解釋方式,Ubuntu默認(rèn)采用dash,導(dǎo)致語(yǔ)法錯(cuò)誤。
    發(fā)表于 11-05 13:39

    【EASY EAI Nano-TB(RV1126B)開(kāi)發(fā)板試用】命令行功能測(cè)試-shell腳本進(jìn)行IO控制-紅綠燈項(xiàng)目-實(shí)現(xiàn)開(kāi)機(jī)起動(dòng)

    0接上文【EASY EAI Nano-TB(RV1126B)開(kāi)發(fā)板試用】命令行功能測(cè)試-shell腳本進(jìn)行IO控制-紅綠燈項(xiàng)目 Linux 起動(dòng)系統(tǒng)下 init 系統(tǒng)大多數(shù)
    發(fā)表于 11-03 17:25

    蜂鳥hbird sdk的Makefile架構(gòu)分析

    一.前言 簡(jiǎn)介: 蜂鳥系列的MCU開(kāi)發(fā)工具分為基于SDK和圖形化的IDE兩種開(kāi)發(fā)方式,我們采用了基于SDK的開(kāi)發(fā)方式, SDK的構(gòu)建主要由多個(gè)Makefile文件組成,本文主要介紹了各
    發(fā)表于 10-30 07:15

    使用其他燒錄器進(jìn)行 E203 CPU 程序下載,超實(shí)用技能!

    需要的文件如下: 第一個(gè)文件為 OpenOCD 需要的腳本文件,用于配置燒錄器和CPU信息,具體內(nèi)容如下: 該文件為Tcl腳本語(yǔ)言編寫,注意到這里沒(méi)有指定 Flash,因?yàn)镕lash這個(gè)問(wèn)題有點(diǎn)
    發(fā)表于 10-28 08:07

    Linux系統(tǒng)下編譯C語(yǔ)言仿真蜂鳥E203(二)

    目錄下,運(yùn)行makefile腳本,采用ILM方式編譯產(chǎn)生coremark.verilog二進(jìn)制文件 如下所示: 通過(guò)readmem的方式將文件加載到itcm中,采用VCS編譯器運(yùn)行tb腳本,相關(guān)的編譯
    發(fā)表于 10-24 13:38

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

    執(zhí)行結(jié)果呈現(xiàn)給用戶;同時(shí)Shell也是一種解釋性的編程語(yǔ)言或者腳本語(yǔ)言開(kāi)發(fā)容易可以在短時(shí)間內(nèi)完成功能強(qiáng)大又好用的腳本,可以在不同的系統(tǒng)上移
    發(fā)表于 09-28 09:05

    嵌入式開(kāi)發(fā)新選擇:LuatOS腳本框架入門教程

    LuatOS正成為嵌入式開(kāi)發(fā)的新趨勢(shì)!本教程帶你從基礎(chǔ)入手,全面了解其基于Lua的腳本開(kāi)發(fā)模式與輕量級(jí)運(yùn)行框架。 一、LuatOS 編程起步 1.1 底層固件怎么啟動(dòng) LuatOS 腳本
    的頭像 發(fā)表于 09-26 17:34 ?728次閱讀
    嵌入式<b class='flag-5'>開(kāi)發(fā)</b>新選擇:LuatOS<b class='flag-5'>腳本</b>框架入門教程

    Linux 應(yīng)用開(kāi)發(fā)手冊(cè)

    T507linux應(yīng)用開(kāi)發(fā)手冊(cè)
    發(fā)表于 08-22 17:01 ?15次下載

    Shell腳本入門指南

    Shell 是一塊包裹著系統(tǒng)核心的殼,處于操作系統(tǒng)的最外層,與用戶直接對(duì)話,把用戶的輸入, 解釋給操作系統(tǒng),然后處理操作系統(tǒng)的輸出結(jié)果,輸出到屏幕給與用戶看到結(jié)果。
    的頭像 發(fā)表于 06-03 10:47 ?1344次閱讀
    <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>入門指南

    【米爾-RK3562開(kāi)發(fā)板試用評(píng)測(cè)】命令行功能測(cè)試-shell腳本進(jìn)行IO控制-(綠色)RUN 燈、(紅色)User燈

    在板上使用shell腳本語(yǔ)言簡(jiǎn)單明了開(kāi)發(fā)效率高便于調(diào)試修改動(dòng)態(tài)性強(qiáng)資源利用靈活但實(shí)時(shí)性不足。 shell腳本
    發(fā)表于 05-09 18:19
    神池县| 长海县| 安达市| 白山市| 大城县| 车险| 犍为县| 望江县| 周至县| 德化县| 普洱| 舞阳县| 深水埗区| 田阳县| 五常市| 马关县| 抚宁县| 九江市| 拉孜县| 饶河县| 夹江县| 恭城| 将乐县| 元阳县| 隆林| 榆树市| 宝丰县| 汶川县| 凤山市| 万全县| 杭州市| 永春县| 唐河县| 莱芜市| 黎平县| 墨江| 邮箱| 南皮县| 香港 | 弥勒县| 平乡县|