1.何為靜態庫……何為動態庫……?
windows下:.dll 是動態庫 .lib是靜態庫
linux下: .so是動態庫 .a是靜態庫
靜態庫:
在生成可執行程式的時候,會把函式的具體執行方式封裝到程式中,程式體積比較大,只要能編譯成功,就可以在任意相同的平台上執行
動態庫:
在生成可執行程式的時候,只會把函式的介面封裝到程式中,體積較小,在程式開始執行時,才呼叫函式的具體執行方式
2.具體生成方式
靜態庫:
<1> 生成 .o檔案
gcc -c fun.c (生成fun.o)
<2>生成靜態庫
ar crs -o libfun.a fun.o
<3>鏈結
gcc main.c -o main libfun.a
動態庫:
<1>生成動態庫 .o檔案
gcc -fpic -c fun.c (生成fun.o)
<2>生成動態庫
gcc -fpic -shared -o libfun.so fun.o
<3>鏈結
gcc main.c -o main -i xx1 -l xx2 -lfun
1.ldconfig 動態庫路徑
2.將庫檔案複製到 /usr/bin 或 /lib目錄下面
linux 下靜態庫和動態庫
我們通常把一些公用函式製作成函式庫,供其它程式使用。函式庫分為靜態庫和動態庫兩種。靜態庫在程式編譯時會被連線到目標 中,程式執行時將不再需要該 靜態庫。動態庫在程式編譯時並不會被連線到目標 中,而是在程式執行是才被載入,因此在程式執行時還需要動態庫存在。本文主要通過舉例來說明在 linux中如何建立...
linux下的靜態庫和動態庫
庫是什麼?在我們實際程式設計中,經常會引入各種庫函式,那麼庫是什麼?從本質上來說是一種可執行 的二進位制格式,可以被載入記憶體中執行。庫分靜態庫和動態庫兩種。靜態庫 linux下靜態庫的名字一般是lib a,為庫的名字。利用靜態函式庫編譯成的檔案比較大,因為整個函式庫的所有資料都會被整合進目標 中,...
linux下的靜態庫和動態庫
意義 為了避免 的重寫率,我們可以將已經寫好的 形成乙個庫,當我們再次用到的時候可以直接呼叫,而不是重新去寫,即 站在巨人的肩膀上 linux下有兩種庫 一 靜態庫 準備工作 int swap int x,int y include int main 1 將我們需要的函式生成乙個.o 檔案 root...