2020 03 10課堂筆記

2021-10-03 17:30:17 字數 1790 閱讀 1219

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

vim(文字編輯器):學會使用和如何配置vim

gcc(編輯器):學會製作動態庫和靜態庫及使用和區別;

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

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

linux文字編輯器:vim–功能最強大文字編輯器—擺脫滑鼠

vi–vim–**im:命令模式(nyy\p\ndd\u)、插入模式(i\a)、底行模式(shift+:)

如何配置vim?etc\vim\vimrc

ide(整合開發環境):vscode

編譯器:gcc (gnu cc)

1、gcc特點(gnu工具、交叉編譯器)

什麼是交叉編譯器?

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

預處理、編譯、彙編、連線

(pc:x86)

hello.c gcc hello.c a.out./a.out–>linux手機(arm)

交叉編譯:在當前cpu平台下編譯出在其他cpu平台下可執行的**

預處理:標頭檔案展開、巨集替換、條件編譯-e -i -d

編譯:將預處理檔案編譯成彙編檔案.s -s

彙編:將彙編檔案編譯生成目標檔案.o -c

連線:建立符號表–可執行檔案a.out

-o 重新命名可執行檔案

<>:搜尋路徑在系統頭檔案目錄(usr/include)

" ":搜尋路徑先在當前目錄查詢,找不到再到系統的頭檔案目錄查詢。

一、gcc常用編譯選項:

-e -s -c -o -i -d

-wall -w

-o1 -o2 -o3

二、靜態庫.a和動態庫的製作.so

1、什麼庫檔案?儲存函式和變數(倉庫)特點:儲存的函式與變數,只能使用但不能看到其實現。

2、linux庫檔案:

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

動態庫:在執行時載入;

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

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

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

3)使用靜態庫生成的可執行檔案執行速度快;使用動態庫生成的可執行檔案執行速度慢;

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

3、linux庫檔案存放路徑:

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

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

如何製作靜態庫?

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

2、靜態庫的製作工具:ar

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

ar rcs libadd.a add.o

3、使用

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

gcc main.c -ladd -l -o add

如何製作動態庫?

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

9 1課堂筆記

課堂筆記 一 1 file類的構造方法 public file string pathname 根據parent抽象的路徑名和child路徑名字串建立乙個新的file物件。pathname指路徑名字串,parent父抽象路徑名 父抽象路徑名既可以是字串,也可以是file物件 public file ...

9 7課堂筆記

課堂筆記 執行緒的同步 為什麼需要 執行緒同步 執行緒間共享 和資料可以節省系統開銷,提高程式執行效率,但同時也導致了資料的 訪問衝突 問題,如何實現執行緒間的有機互動 並確保共享資源在某些關鍵時段只能被乙個執行緒訪問,即所謂的 執行緒同步 synchronization 就變得至關重要。臨界資源 ...

2018 3 8課堂筆記

選擇器的優先級別可以如下方式計算 a 行內樣式權重1000,b id選擇器權重100 c 類 偽類和屬性選擇器權重10,d 標籤選擇器和偽元素選擇器權重為1 對於網頁中背景的修改 都是以background開頭的,例如 background position背景的定位 background size...