嵌入式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.多繼承 繼承的概念 類的繼承就是根據乙個類建立乙個新類的過程,以乙個類創造新類,新類包含已有類的所有成員,而且新類可以根據需要新增新的成員。通常將用來派生新類的類稱為基類,又稱為父類,而將派生出來的新類稱...