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

      網友投稿 893 2022-05-28

      任務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]=

      echo "[0]=$0"

      "

      echo "[1]="

      echo "[2]="

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

      echo "[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[*]}"

      Linux Makefile Shell

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:MySQL InnoDB系統表空間數據文件配置
      下一篇:iGuard和NFS文件同步的解決方案
      相關文章
      亚洲国产av一区二区三区| 亚洲αⅴ无码乱码在线观看性色| 亚洲1区2区3区精华液| 亚洲最大的黄色网| 亚洲一级片在线播放| 亚洲精品无码久久毛片波多野吉衣 | 亚洲高清视频在线| 亚洲av无码不卡久久| 亚洲免费中文字幕| 色婷五月综激情亚洲综合| 国产人成亚洲第一网站在线播放| 亚洲一线产品二线产品| 亚洲熟妇av午夜无码不卡| 亚洲国产欧美日韩精品一区二区三区 | 亚洲成AV人片一区二区| 亚洲AV无码专区电影在线观看 | 亚洲成色WWW久久网站| 国产AV无码专区亚洲Av| 久久99国产亚洲精品观看| 亚洲国产精华液网站w| 久久精品亚洲综合| 亚洲视频在线观看视频| 亚洲午夜成激人情在线影院| 国产成人精品日本亚洲专区6| 亚洲中文字幕无码中文| 久久久久亚洲国产AV麻豆 | 亚洲黄片毛片在线观看| 久久久久亚洲?V成人无码| 国产精品亚洲片在线观看不卡| 久久久久亚洲精品成人网小说| 久久久久久亚洲精品| 亚洲最新黄色网址| 精品国产成人亚洲午夜福利| 亚洲av无码日韩av无码网站冲| 亚洲а∨天堂久久精品| 亚洲精品美女久久777777| 亚洲日本一区二区| 亚洲综合色区中文字幕| 国产精品亚洲lv粉色| 久久久久亚洲AV成人网| 久久久久久亚洲精品中文字幕|