函式庫有靜態庫和動態庫兩種:
靜態庫是一系列的目標檔案(.o)的歸檔檔案,檔名為
libname.a
(如果自己寫
libmyself
則庫名就為
lmyself
)。如果在編譯某個程式時鏈結靜態庫,則鏈結器將會搜尋靜態庫,從中提取出它需要的目標檔案並直接複製到該程式的可執行二進位制檔案(
elf格式檔案)之中;
動態庫【
.主版本號
.次版本號
.發行號】。在程式編譯時並不會被鏈結到目標**中,而是在程式執行時才被載入。
生成靜態庫步驟:用-c
生成.o檔案(
用.o檔案來生成庫檔案。包含靜態庫和動態庫)。
#gcc –
c unsgn_pow.c
通過.o檔案生成靜態庫檔案
#ar rcsv libmytest.a unsgn_pow.o
通過生成的靜態庫檔案進行對測試程式的匯入並執行。(注意最後乙個庫名跟上面的相似之處)
#gcc –
o pow_test pow_test.c
–l .
–lmytest (
如果上面庫檔名寫成
libmy.a
則這邊應寫成
-lmy)
最後執行程式
#./pow_test 2 10
生成動態庫步驟
用-fpic
–wall -c
生成.o檔案
#gcc –
fpic
–wall
–c unsgn_pow.c
通過.o檔案以及
-shared
–o (庫名)
生成動態庫檔案
#gcc –
shared
–o libmytest.so unsgn_pow.o
通過生成的動態庫檔案編譯測試程式
#gcc –
o pow_test pow_test.c
–l .
–lmytest
在執行可執行程式之前,需要註冊動態庫的路徑名。方法有: 修改
/etc/ld.so.conf
檔案,之後還要執行
# ldconfig 。
ld.so.conf 檔案包含乙個所有目錄(
/lib
和 /usr/lib
除外,它們會自動包含在其中)的清單,動態裝入器將在其中查詢共享庫。
ld.so.cache
在動態裝入器能「看到」這一資訊之前,必須將它轉換到 ld.so.cache
檔案中。可以通過執行
ldconfig
命令做到這一點:
# ldconfig
當 ldconfig 操作結束時,您會有乙個最新的
/etc/ld.so.cache
檔案,它反映您對
/etc/ld.so.conf
所做的更改。從這一刻起,動態裝入器在尋找共享庫時會檢視您在
/etc/ld.so.conf
中指定的所有新目錄。
或者修改ld_library_path環境變數,或者將庫檔案直接複製到
/lib
或者/usr/lib
目錄下
#cp libmytest.so /lib
執行程式
#./pow_test 2 10
Linux 學習記錄
1.linux 拷貝隱藏檔案 進入當前需要拷貝的目錄,即源目錄 假如 source 拷貝到 centos5.3 cd source tar cf cd centos5.3 tar xvf 或者 cp r centos5.3 2.linux 下新增postgresql 使用者 進入 postgresq...
Linux學習記錄
tar xvzf name.tar.gz 解壓命令 tar cvxf name.tar.gz home phoenix 將 home phoenix目錄下檔案壓縮成gz檔案 tar xvf name.tar 解壓命令 tar cvf name.tar home phoenix 將 home phoe...
Linux學習記錄
1.查詢檔案及目錄的命令 find。例如 find name filename或find name filename 可以查詢這個系統中名為filename的檔案及目錄。3.關於cp的用法。cp 原始檔路徑 目標檔案路徑 貌似絕對路徑和相對路徑都可以,也可以混合使用。其它命令應該也同理吧 若複製的檔...