add是庫lib.c中的函式,生成liblib.so
gcc lib.c -shared -g -debug -o liblib.so
編譯呼叫庫的程式,指定庫檔案使用當前路徑
給動態庫函式add設定斷點
(gdb) b add
在下面提示中輸入 y
function "add" not defined.
make breakpoint pending on future shared library load? (y or [n]) y
breakpoint 1 (add) pending.
執行程式 r
(gdb) r
提示如下:
breakpoint 1, add (a=2, b=3) at lib.c:3
3 return a+b;
這時就進入到了動態庫的函式中。
繼續執行程式,輸入c
(gdb) c
continuing.
rusult is 5
program exited normally.
以下是測試程式:
/* lib.c */
int add(int a,int b)
return a+b;
/* lib.h */
extern int add(int a,int b);
#include
#include "lib.h"
int main(void)
int a=2;
int b=3;
int result;
result = add(a,b);
printf("rusult is %d/n",result);
return 0;
Linux下的靜態庫 動態庫和動態載入庫
linux下可以建立兩種型別的庫 靜態庫 a 在鏈結期間被應用程式直接鏈結進可執行檔案 動態鏈結庫 so 動態庫還分為兩種用法 a 應用程式執行期間鏈結動態庫,但是在編譯期間宣告動態庫的存在,也就是說這種動態庫必須在編譯時對編譯器可見,但編譯器卻不將此種庫編譯進可執行檔案 b 在執行期間,動態載入和...
Linux中的動態庫
編譯動態庫命令 gcc shared fpic o so c showone.c include include myshow.h int myshow showtw.c include include myshow.h int myshow 編譯好之後,再把main函式編譯為可執行檔案 inclu...
Linux的動態連線庫
大家對windows作業系統中的dll檔案一定十分熟悉,其實這種軟體元件化的方法在linux中也可以實現。其實外掛程式和 dll 通常是用來無須編寫整個新應用程式而新增功能的極好方法,一般來講,在不更改原有應用程式的情況下,外掛程式為現有應用程式提供新功能。linux環境下甚至做的更好。linux提...