Linux下動態庫和靜態庫的生成命令

2022-04-04 02:27:44 字數 839 閱讀 4764

區別

1、靜態庫在編譯的時候被載入,動態庫在執行的之後被載入

2、載入靜態庫編譯所生成的可執行檔案比使用動態庫的方式要大

3、靜態庫以.a為字尾,動態庫以.so為字尾

靜態庫的製作:(以main.c呼叫add()函式為例)

1.通過gcc -c add.c 生成目標檔案 =》add.o

2.通過ar crs -o libadd.a add.o 生成靜態庫 =》libadd.a

3.通過gcc main.c -l. -ladd 鏈結靜態庫編譯,生成可執行檔案a.out

4.執行a.out即可

動態庫的製作

1.通過gcc -c add.c 生成目標檔案 =》add.o

2.通過gcc -fpic -shared -o libmyadd.so add.o 生成動態庫檔案 =》libmyadd.so

3.通過gcc main.c -l. -lmyadd 生成可執行檔案 =》a.out

4,此時,執行找不到庫檔案,我們可以

(1)將libmyadd.so放到/usr/lib或/lib目錄下

(2)通過export ld_library_path=/home/linux/ych/lib 將庫所在的絕對路徑新增至環境變數中(通過echo $ld_library_path檢視此環境變數的值;通過unset ld_library_path來刪除此環境變數裡的值)

(3)在/etc/ld.so.conf.d/下新建乙個sudo vi my.conf檔案,在裡面寫入庫所在的絕對路徑,儲存並執行sudo ldconfig執行配置檔案。

Linux下的動態庫和靜態庫

靜態庫 程式編譯時載入,可執行程式體積大。一般命名為lib x.a。動態庫 程式執行時載入,可執行程式體積小。一般命名為lib x.so.1.3。x一般指庫名,如libxml2 tinyxml等 動態庫一般預設安裝在 lib 或者 usr lib 或者 usr local lib下。如果安裝的庫不在...

linux下的動態庫和靜態庫

1 使用gcc建立和使用靜態庫 1 gcc o mylib.o c mylib.c 生成o檔案 2 ar rcs libmylib.a mylib.o 生成a檔案 c create的意思 r replace的意思,表示當插入的模組名已經在庫中存在,則替換同名的模組。3 cp libmylib.a u...

Linux下的動態庫和靜態庫

1 使用gcc建立和使用靜態庫 1 gcc o mylib.o c mylib.c 生成o檔案 2 ar rcs libmylib.a mylib.o 生成a檔案 c create的意思 r replace的意思,表示當插入的模組名已經在庫中存在,則替換同名的模組。3 cp libmylib.a u...