-如果多個程式使用同乙個動態庫,如果動態庫出現bug,不需要公升級所用該動態庫的程式,只要公升級該動態庫。靜態庫是編譯的時候被載入,使用靜態庫的好處:-該動態庫只有這乙個,沒有其他副本,節省記憶體空間
-使用靜態庫編譯好的 程式在任何機器上都可以直接執行。在使用動態庫的時候,經常會出現動態庫未被發現:undefined reference to 『函式名』-如果有多個程式使用該靜態庫,如果公升級該靜態庫,使用該靜態庫的所有的軟體都要重新編譯。
ldd 可執行檔案 #檢視哪個庫沒有被發現
解決方法
以把當前路徑加入
#vim /etc/ld.so.conf
1 include ld.so.conf.d/*.conf
2 /usr/local/gcc/gmp-4.3.2/lib
3 /usr/local/gcc/mpfr-2.4.2/lib
4 /usr/local/gccc/mpc-0.8.1/lib
5 /home/xiaowei/metad/dev/metad/plugins/netflow_v9/src
然後:
#ldconfig
在使用的時候:
gcc -fpic
-shared libaa.so aa.c
gcc -o
list
list
.c -l
.-laa
-l:表示共享庫路徑
靜態庫
#gcc -c hello.c 這裡沒有使用-shared選項
#ar -r libhello.a hello.o
在程式中鏈結靜態庫
#gcc test.c -lhello -l. -static -o hello.static
cgo通過動靜態庫呼叫c c
可以參考 c 靜態庫與動態庫 概括 動靜態庫區別總結 1 鏈結方式不一樣。呼叫階段不同動態庫在程式執行的時候進行呼叫,靜態庫在鏈結階段將彙編檔案與引用到的庫一起鏈結生成可執行檔案。因此前者生成的可執行檔案較後者小。同時,當庫檔案改變時,動態庫只需要重新編譯庫檔案,而靜態庫需要編譯所有檔案。2 庫檔案...
c語言動靜態庫
一,動靜態庫 1.什麼是庫檔案?用來儲存函式和變數的倉庫,只能使用庫檔案裡的函式或者變數,但無法看到是如何實現的。例如 printf,scanf,strcpy這些都是庫函式,也就是儲存在庫檔案裡的函式 2.linux庫檔案 靜態庫.a 和動態庫.so 3.linux庫檔案的存放位置 lib 系統啟動...
Linux 下編譯鏈結動靜態庫
linux 版本是 red hat 9 核心版本是 2.4.18 輸入 which gcc 檢視 gcc 的位置在 usr bin gcc gcc v 檢視 gcc 編譯前的配置資訊 prefix usr 說明了安裝目錄 沒有 with headers 說明預設的 include 就在安裝目錄下 所...