嵌入式課堂筆記3

2021-10-03 23:48:38 字數 1823 閱讀 4761

學習筆記3:

嵌入式linux開發工具 vim gcc gdb make

gcc編譯器:學會製作動態庫和靜態庫及使用與區別

gdb偵錯程式:設定斷點、單步執行、除錯記憶體錯誤

make工程管理器:編寫makefile檔案

linux文字編輯器:vim–功能最強大的文字編輯器–拜託滑鼠;

vi–vim–**im:命令列模式、插入模式(i)、低行模式(shift+:)

vim hello.c

esc+shift+:+wq(w儲存q退出 !強制退出)

配置:vim /etc/vim/vimrc

esc +nyy(複製)+p (貼上)ndd (刪除)u(恢復)(n表示要操作的行數)

ide(整合開發環境) 推薦:vscode

gcc編譯器:gcc(gnu cc)

1、gcc特點(gnu工具、一款交叉編譯器 如:arm-linux-gcc)

什麼是交叉編譯器?(不同的彙編有不同的可執行檔案,所以需要交叉編譯)

原始檔到可執行檔案需要經歷哪幾個步驟?

預處理、編譯、彙編、鏈結

預處理(-e .i)(gcc -e hello.c >hello.i生成字尾為.i的檔案):標頭檔案展開,巨集替換,條件編譯(#都在預處理階段處理)(>定向輸出)

gcc hello.c -dmax=100(-d新增巨集)

gcc hello.c -o hello(-o改變a.out的名字,重新命名可執行檔案)

執行:./hello

gcc hello.c -w -o hello(-w關閉警告,慎用)

gcc -wall hello.c(調高警告資訊)

time ./a.out(檢視時間)

gcc -o1 hello.c(一級優化) -o2 -o3 (gcc -wall -o3 hello.c)

如何製作靜態庫和動態庫

1、什麼是庫檔案?

儲存函式和變數(倉庫) 特點:儲存的函式與變數,只能使用但不能看到其實現;

2、linux庫檔案:

靜態庫(.a):在編譯階段載入;(將庫檔案的**載入到原始檔)

動態庫(.so):在執行時載入;

生成的可執行檔案存在區別(優缺點)

(1)使用靜態庫生成的可執行檔案大於動態庫生成的可執行檔案(程式執行占用記憶體較多)

(2)使用靜態庫生成的可執行檔案難以公升級,使用動態庫生成的可執行檔案易於公升級;

(3)使用靜態庫生成的可執行檔案執行速度塊,使用動態庫生成的可執行檔案執行速度慢

(4)使用靜態庫可執行檔案裡的**容易部署,動態庫難以部署

3、linux庫檔案存放路徑:(自動搜尋路徑)

/lib:存放的系統執行所需要的庫

/usr/lib:存放的是程式執行所需要的庫

4、如何製作靜態庫?

(1)將需要儲存的函式所在的檔案編譯成目標檔案 gcc -c add.c---->add.o

(2)靜態庫的製作工具:ar

ar rcs(不存在就建立,存在就更新)庫名 目標檔名

ar rcs libadd.a add.o

(cp libadd.a/lib or/uer/lib)

(3)使用

gcc 原始檔-l庫名 -l庫存放的路徑

gcc main.c -ladd

5、如何製作動態庫

gcc -shared -fpic原始檔 -o libcal.so

gcc -shared -fpic add.c sub.c -o libcal.so

使用:cp libcal.so/usr/lib

gcc main.c -lcal

gcc main.c./libcal.so -o cal

嵌入式課堂筆記

一 資料型別 1 strlen 測量乙個字串有多少字元 不統計 0 printf strlen str d n strlen src 2 整數原碼 補碼 負數補碼 原碼取反 1 3 bit 位元組 8bit 半字 2個位元組 16bit 字 4個位元組 32bit 4 sizeof num 測量乙個...

嵌入式課堂3拓展知識

1.gcc static 作用?禁止使用共享連線。2.編譯器的 優化,每一級優化作用?1 o選項供程式優化使用 o1提供基礎級別的優化 o2提供更加高階的 優化,會占用更長的編譯時間 03提供最高端的 優化 04不優化,這是預設值 不同的優化級別使用的優化技術也可以單獨的應用於 可以使用 命令列選項...

嵌入式系統課堂總結

嵌入式系統課堂總結2.25 一 嵌入式開發概述 1 嵌入式技術是什麼 在已有的硬體上移植作業系統,在作業系統之上做上層應用開發,在作業系統之下做底層開發。2 作業系統的作用 管理資源 軟 硬體資源 3 傳統開發的缺點 軟體移植性差 適配平台能力差 開發人員能力要求 軟硬通吃 二 嵌入式開發的方向 嵌...