一.建立靜態庫與使用:
(建立靜態庫): 1.編寫原始碼。這個可以想像成是一種服務或一種函數,它可以為別的程式提供服務。 2.產生目標檔案:gcc -c xxxx.c -o xxxx.o(注意,這裡是用-c選項來編譯) 3.使用ar命令建立靜態庫: ar rc libxxx.a xxxx.o 說明:libxxx.a是你想要建立靜態庫的名字,根據習慣在Linux下庫名稱是以lib開頭的,以.a結尾的表示是靜態庫。xxxx.o則是以這個目標檔案來產生靜態庫。
(使用靜態庫): 1.使用靜態庫需要獲得兩個檔案:標頭檔:xxxx.h, 和靜態庫檔案:libxxxx.a 2.在編譯其他源檔案(一些需要使用靜態庫中所提供的函數或服務的源檔案)編譯時間使用: gcc -o final xxx.c libxxxx.a
二。建立動態庫(也稱為共用庫)與使用: (建立動態庫): 1.用 gcc 和 -fPIC 參數將源檔案代碼編譯成.o的目標代碼,這個選項產生的程式碼與位置無關,可以在任何地址被串連和裝載。如:gcc -fPIC -Wall -g -c xxx.c -o xxx.o 2.使用-shared來建立共用庫,使用以下命令及參數: gcc -g -shared -W1,-soname,libxxx.so.1.0.0 -o libxxxx.so.1.0.0 xxxxx.o 說明:-soname,libxxx.so.1.0.0:說明soname為“libxxx.so”版本為1.0.0 注意:-W1:那個是數字1 3.建立soname串連。因為前面定義的soname為"libxxx.so",因此需要建立一個"libxxx.so"到"libxxx.so.1.0.0"的串連: ln -sf libxxx.so.1.0.0 libxxx.so (使用共用庫): 1.需要三個檔案:標頭檔xxx.h, 庫檔案:libxxx.so.1.0.0 及其連結libxxx.so 2.編譯:gcc -Wall -g -c xxx.c -o xxx.o 3.串連引用動態庫:gcc -g -o final xxx.o -L ./ -lxxx[這裡的-lxxx是引用其共用庫的名字,它是libxxx.so.1.0.0的縮寫] 4.運行:注意,運行時需要指定庫的搜尋路徑,它由一個環境變數:LD_LIBRARY_PATH指定! LD_LIBRARY_PATH=$(pwd) ./final