靜態庫檔名的命名規範是以lib為字首,緊接著跟靜態庫名,擴充套件名為.a,動態庫檔名命名規範和靜態庫檔名命名規範類,也是在動態庫名增加字首lib,但其擴充套件名為.so。
1、動態庫
在linux下,使用gcc -shared ***.c -o lib***.so可以編譯乙個動態庫,使用gcc
yyy.c -l*** -l.就可以在編譯其他程式時把庫包含進來,編譯好後,執行程式時(./yyy.out),可能提示庫***找不到,這是因為程式執行時在/lib、/usr/lib等預設路徑或ld_library_path環境變數中查詢,而沒有找到的緣故,此時可以把庫複製到/lib或/usr/lib目錄下,也可以設定ld_library_path環境變數,或者把當前路徑加入
/etc/ld.so.conf中然後執行ldconfig等方法來解決該路徑問題。
2、靜態庫
在linux下,使用gcc -c ***.c生成***.o檔案,再使用ar
r lib***.a ***.o生成lib***.a靜態庫檔案,使用gcc yyy.c -l***
-l. -static -o yyy.static就可以在編譯其他程式時把庫包含進來,編譯好後,直接執行./yyy.static就可以,不用管庫存不存在。
對於生成的靜態或動態可執行檔案,我們可以使用"ldd yyy檔名"命令來檢視庫是否存在,並且路徑正確,同時,我們可以使用"time yyy檔名"命令來檢視用靜態庫和動態庫包含進來的可執行程式的執行時間。
在靜態庫和動態庫同名並且在同一路徑時,會優先把動態庫連線到程式中去。
Linux庫檔案使用與編譯
介紹在linux下使用靜態庫 共享庫 動態庫的方法。共享庫 動態庫 usr lib usr local lib 首先在 ld library path 環境變數所設定的路徑下查詢 一般都沒有給此環境變數賦值 搜尋動態裝載器在 etc目錄下的快取檔案 etc ld.so.cache 此檔案由命令ldc...
庫檔案編譯
1 交叉編譯 在glog目錄下 configure host arm arago linux gnueabi prefix path 庫生成路徑 後在glog當前目錄的.lib下就會有.so的動態庫。注意 有的庫生成不僅需要執行上述命令,還需要 make install 來生成庫檔案。2 注意 編譯...
linux 交叉編譯找不到庫檔案
網上大眾的作法這裡不做介紹 在編譯一些庫的時候可能某些工具會用到宿主機的,而這些工具在呼叫的時候會找和宿主機匹配的庫,而交叉編譯的庫是不能用的,遇見這種情況基本是解決不了的,但是可以通過configure 的選項去掉這些過程,舉個例子 我在編譯 udev 的時候 用到 g ir scanner 這個...