第三次課堂總結

2021-10-03 22:08:47 字數 2598 閱讀 8603

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

vim(文字編輯器)的基本操作

1、進入vim編輯器(從命令列提示符),輸入∶vim 檔名 《回車》

2、退出vim編輯器,請輸入以下命令放棄所有修改∶

:q! 《回車》

或者輸入以下命令儲存所有修改∶

:wq 《回車》

3、在正常模式下刪除游標所在位置的字元,請按∶ x

4、在正常模式下要在游標所在位置開始插入文字,請按∶

i 或a輸入必要文字

**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平台下可執行的**;

為什麼要進行交叉編譯?

不同的處理器有不同的彙編,不同的彙編生成的可執行檔案只能被當前cpu執行。

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

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

**預處理:**標頭檔案展開、巨集替換、條件編譯(#開頭都在預處理)

gcc -e 檔名 //將標頭檔案將在到程式裡;

gcc 檔名 -i 目錄 //指定標頭檔案的第三方搜尋路徑;

gcc 檔名 -dmax=100 //在檔案裡巨集定義,max=100;

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

gcc -s 檔名 //將原始檔編譯成彙編檔案;

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

gcc -c 檔名 //彙編結束停下,生成.o檔案

鏈結:建立符號表–可執行檔案a.out

重新命名可執行檔案:gcc 源檔名 -o 新檔名

包含標頭檔案的「<>」與「 「」 」的區別:

<>:搜尋路徑在系統頭檔案目錄(/usr/include),如果找不到,則報錯;

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

gcc常用編譯選項:

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

gcc 檔名 -w //將警告關掉;

gcc 檔名 -wall // 將警告開啟『』

-o1 -o2 -o3編譯器的**優化;

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

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

2、linux庫檔案:

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

動態庫:在執行時載入;

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

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

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

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

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

3、linux庫檔案存放路徑:

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

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

如何製作靜態庫?

1、先用vim建立.c檔案

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

3、靜態庫的製作工具: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

gcc -static 作用是 禁止使用共享連線。

第三次總結

前兩次主要了解了該項目的用途與實現過程,具體的專案流程以及一些小作業 git教程等 了解伺服器端 serv.py等 的程式 搭建新的測試伺服器 與db配合寫介面函式等 具體請見前兩次總結過程,還有在實踐過程中遇到的各種問題。客戶端的測試分為多個windows系統,本次主要是windows10版本。測...

第三次課堂內容筆記

cin 物件 變數 輸入流 cout 物件 變數 輸出流 cerr 輸入 錯誤資訊 cout與cerr 輸出正常資訊用cout 錯誤資訊用cerr while 1 c語言中死迴圈 cout是有緩衝區的,型別是行緩衝 只有遇到 n才會輸出 cerr無緩衝區,只要有輸入,無論對錯一定輸出 clog無緩衝...

第三次課堂總結(10 10)(繼承與派生)

第三次課堂總結 1.繼承和派生類的概念 2.訪問許可權控制 3.派生類的建構函式和析構函式 4.多繼承 繼承的概念 類的繼承就是根據乙個類建立乙個新類的過程,以乙個類創造新類,新類包含已有類的所有成員,而且新類可以根據需要新增新的成員。通常將用來派生新類的類稱為基類,又稱為父類,而將派生出來的新類稱...