嵌入式課程設計總結(三)

2021-10-03 22:21:15 字數 2063 閱讀 5301

vim、gcc、gdb、make

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

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

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

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

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

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

如何配置vim?etc\vim\vimrc

ide(整合開發環境):vscode

編譯器:gcc (gnu cc)

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

什麼是交叉編譯器?

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

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

(pc:x86)

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

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

系統移植

宿主機(pc)----(交叉編譯)---->目標機(開發板、手機)

預處理:標頭檔案展開,巨集替換,條件編譯-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

嵌入式課程設計總結(二)

學習內容 linux介紹 使用linux操作 命令 linux開發工具 目標 會用!夠用!vm虛擬機器 通過軟體的方法模擬pc 為什麼不使用雙系統?嵌入式開發與核心相互,會導致系統崩潰 linux發行版 發行給使用者使用的版本 redhat centos7 企業版 ununtu 16.10 18.0...

嵌入式課程設計總結(六)

嵌入式linux開發工具 gcc make shell 嵌入式linux系統開發 通過核心提供的服務實現相應功能 c語言程式設計 無os語法 嵌入式linux c開發 會看使用說明書 linux系統構成 使用者空間 核心空間 分為兩個空間作用保護核心的訪問安全保護核心的訪問安全 使用者空間不能隨便訪...

嵌入式課程設計總結(五)

自動生成 cmake autotool 嵌入式linux開發工具 shell程式設計 指令碼 批處理 linux系統運維工程師 嵌入式系統開發 系統移植 將使用者輸入的命令解析,呼叫相應的命令的可執行檔案 命令 可執行檔案 在這裡插入描述 變數 if for while until case 函式 ...