筆記(5)靜態庫和動態庫 gdb偵錯程式

2021-09-27 11:49:07 字數 1199 閱讀 3203

靜態庫和動態庫的製作與使用

1、什麼是庫檔案?

儲存函式和變數,只能使用不能看到其實現。

sdk開發包:庫檔案+開發工具

2、linux庫檔案分類

.a 靜態庫:使用靜態庫編譯程式,是在編譯時載入。

.so動態庫:使用動態庫編譯程式,是在執行時載入。

使用靜態庫和動態庫編譯生成可執行檔案的優缺點?

靜態庫:可執行檔案大,占用記憶體多,執行快。

動態庫:可執行檔案小,占用記憶體少,易於公升級。

3、linux庫檔案存放位置:/lib ; /usr/lib

4、製作靜態庫:gcc -c add.c

gcc -c sub.o

ar rcs libcal.a add.o sub.o

gcc main.c -lcal -l. -ocal

l : 指定鏈結

l:指定路徑

libm.a libm.so 數學函式存放的庫

lib.a lib.so 函式庫

偵錯程式:gdb

三大特點:1、啟動被呼叫的程式;

2、可以設定斷點,單步執行;

3、檢視變數的值;

gcc -g(呼叫gdb) sum.c -o sum

gdb sum(可執行檔案)

檢視原**:gdb+可執行檔案±-tui

layout asm 彙編+原碼

layout split 彙編

layout src 原碼

layout reg 暫存器

斷點相關命令:break+行號

break+行號+條件

break+函式名

檢視斷點資訊:info break

刪除斷點資訊:delete 斷點編號

開啟斷點:enable 斷點編號

關閉斷點:disable 斷點編號

清除斷點:clear+行號

執行命令:run:執行程式

next:單步執行不會進入子函式

step:單步執行會進入子函式

continue:繼續執行直到程式結束(再次遇到斷點會停)

display:設定單步執行或其他情況中,自動顯示的對應表示式的內容。

finish:執行程式,直到當前函式完成返回。

until:在執行完迴圈體內的最後一條語句之後執行until,就會執行完迴圈體到後面的乙個語句停下。

watch:實時監視需要檢視的內容。

庫(靜態庫和動態庫)

一 靜態庫 以c語言的形式生成庫 h中extern c int add int int extern c int sub int int 二.測試靜態庫 將.h和.lib放入 h ifdef cplusplus c 程式設計師用c的方式開啟 extern c int add int int exte...

靜態庫和動態庫

一。靜態庫 靜態庫的優點在於使用簡單,編譯快速。靜態庫在應用程式生成時,已經編譯成為可重定位的目標檔案,因此可以不必再編譯,節省編譯時間,以最短的時間生成可執行程式。步奏 a。建立靜態庫 1 在編輯器中編輯其靜態庫函式 static lib.c 2 在shell中編譯該原始檔,生成乙個可重定位的目標...

靜態庫和動態庫

靜態庫 lib 中相當於存放了所有的源 包括他引入的其他靜態lib檔案.其實是所有cpp編譯後對應的.obj檔案的打包 所以靜態lib都比較大。動態庫dll也有lib但是這個lib,只是用來幫助程式在鏈結時定位dll中的函式的位址的。所以會在exe載入時才重定位函式的位址。重定位就是根據鏈結的這個l...