靜態庫和動態庫的製作與使用
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...