lib庫linux
Ⅰ linux 里有/lib和/usr/lib,這兩個目錄下的庫文件有什麼區別嗎
/lib這個目錄下的函數庫是在開機時會用到的函數庫,還有/bin、/sbin裡面的那些命令調用的函數庫,/lib/moles下面還會放置內核模塊(驅動程序);而/usr/lib目錄放置的是應用軟體用到的函數庫文件。
Ⅱ Linux 里有/lib和/usr/lib,這兩個目錄下的庫文件有什麼區別嗎如果沒區別為什麼又要分開放呢
/lib-----系統本身自帶的庫存放處
/usr/lib-----安裝完成後用戶自己安裝的庫文件的存放處
仔細觀察/usr目錄,你會發現這個目錄下面也有bin和sbin等一些根目錄下的目錄。usr不是user的縮寫,而是unix software resource的縮寫,裡面存放的都是用戶後來安裝的軟體
Ⅲ linux下librdkafka庫怎麼使用
可以放在當前目錄下,但是要設置一下
庫文件
的路徑:
LD_LIBRARY_PATH
=./:/usr/local/pet20/lib:/lib/:/usr/local/lib
export
LD_LIBRARY_PATH
這樣,在調用的時候就會自動從當前目錄找。
如果是顯式調用則不用,只要在程序里指定.so的文件路徑就可以了。所以放在當前目錄下也是沒問題的。
Ⅳ 如何檢查linux上安裝lib是否齊全
1、操作系統級別的共享庫和基礎的系統工具庫
比方說libc.so, libz.so, libpthread.so等等,這些系統庫會被放在/lib和/usr/lib目錄下面,如果是64位操作系統,還會有/lib64和/usr /lib64目錄。如果操作系統帶有圖形界面,那麼還會有/usr/X11R6/lib目錄,如果是64位操作系統,還有/usr/X11R6 /lib64目錄。此外還可能有其他特定Linux版本的系統庫目錄。
這些系統庫文件的完整和版本的正確,確保了Linux上面各種程序能夠正常的運行。
2、應用程序級別的系統共享庫
並非操作系統自帶,但是可能被很多應用程序所共享的庫,一般會被放在/usr/local/lib和/usr/local/lib64這兩個目錄下面。很多你自行編譯安裝的程序都會在編譯的時候自動把/usr/local/lib加入gcc的-L參數,而在運行的時候自動到/usr/local /lib下面去尋找共享庫。
以上兩類的動態共享庫,應用程序會自動尋找到他們,並不需要你額外的設置和擔心。這是為什麼呢?因為以上這些目錄默認就被加入到動態鏈接程序的搜索路徑裡面了。Linux的系統共享庫搜索路徑定義在/etc/ld.so.conf這個配置文件裡面。這個文件的內容格式大致如下:
/usr/X11R6/lib64
/usr/X11R6/lib
/usr/local/lib
/lib64
/lib
/usr/lib64
/usr/lib
/usr/local/lib64
/usr/local/ImageMagick/lib
假設我們自己編譯安裝的ImageMagick圖形庫在/usr/local/ImageMagick目錄下面,並且希望其他應用程序都可以使用 ImageMagick的動態共享庫,那麼我們只需要把/usr/local/ImageMagick/lib目錄加入/etc/ld.so.conf文件裡面,然後執行:ldconfig 命令即可。
ldcofig將搜索以上所有的目錄,為共享庫建立一個緩存文件/etc/ld.so.cache。為了確認ldconfig已經搜索到ImageMagick的庫,我們可以用上面介紹的strings命令從ld.so.cache裡面抽取文本信息來檢查一下:
strings /etc/ld.so.cache | grep ImageMagick
ldd <可執行文件名> 查看可執行文件鏈接了哪些 系統動態鏈接庫nm <可執行文件名> 查看可執行文件裡面有哪些符號
strip <可執行文件名> 去除符號表可以給可執行文件瘦身
如果我們想從可執行程序裡面提取出來一點什麼文本信息的話,還可以用strings命令
strings <可執行文件名>
Linux操作系統上面的動態共享庫大致分為三類:
Ⅳ 在linux當中也lib開頭的文件的作用是什麼
這些lib庫包括動態運行庫和靜態庫。
lib***.a是靜態庫
lib***.so是動態庫
靜態庫在編譯時被載入到二進制文件中
動態庫在運行時載入到進程的內存空間中
簡單的說,這些庫就是為了讓你的程序能夠正常編譯運行的。
Ⅵ linux下的lib64是做什麼的
linux 64位(可以uname -a查看下內核是否位64位的)用的lib庫,和/lib是一樣的:
/lib :標准程序設計庫,/lib目錄是根文件系統上的程序所需的共享庫,存放了根文件系統程序運行所需的共享文件。又叫動態鏈接共享庫,作用類似windows里的.dll文件。 這些文件包含了可被許多程序共享的代碼,以避免每個程序都包含有相同的子程序的副本,故可以使得可執行文件變得更小,節省空間。
/lib/moles 目錄包含系統核心可載入各種模塊,尤其是那些在恢復損壞的系統時重新引導系統所需的模塊(例如網路和文件系統驅動)。
Ⅶ Linux下的靜態庫和動態庫
linux下的靜態庫和動態庫1.製作自己的動態庫和靜態庫linux下動態庫以.so結尾,靜態庫以.a結尾,它們都以lib開頭,比如一個庫名為net,那麼它的全名應該是libnet.so或者libnet.a。我們有兩個文件,hello.c和test.c,下面是兩個文件的內容//hello.c
www.shiwu.com
#include
<stdio.h>void
my_lib_func(){printf(Library
routine
called/r/n);}//test.c#include
<stdio.h>
www.shiwu.com
int
main(){my_lib_func();return
1;}test.c調用了hello.c的方法,我們把hello.c封裝成庫文件。無論是靜態庫還是動態庫,都是由.o文件組成,我們先把gcc
-c
hello.c生成.o文件製作靜態庫ar
crv
libmyhello.a
hello.o,ar是生成靜態庫的命令,libmyhello.a是我的靜態庫名。下一步就是在我的程序中使用靜態庫
可以看到已經有了Library
routine
called的結果,說明調用成功了。下面我們刪除libmyhello.a,看看程序是否還是運行正常
我們發現程序依然運行正常,說明靜態庫已經連接進入我們的程序中製作動態庫
www.shiwu.com
我們看見動態庫libmyhello.so已經生成,下面繼續使用
找不到庫文件,這個時候我們把so文件拷貝到/usr/lib下面
運行成功2.動態庫和靜態庫同時存在的調用規則我們可以發現,不論是動態庫還是靜態庫,程序編譯連接的時候都是加的參數-l,那麼當他們同時存在的時候,程序會選擇動態庫還是靜態庫呢。我們做個嘗試。
我們同時存在libmyhello.a和libmyhello.so,我們發現運行的時候,出現找不到動態庫的錯誤,由此,我們可以得出結論,同時存在動態庫和靜態庫的時候,gcc會優先選擇動態庫作者
梨樹陽光
Ⅷ linux下libiconv庫怎麼用
權聲明:本文為博主原創文章,未經博主允許不得轉載。
Linux下libiconv庫的安裝和使用:
1.libiconv包的下載路徑
包的下載頁面http://www.gnu.org/software/libiconv/
2.編譯安裝libiconv庫
$tar zxvf libiconv-1.14.tar.gz
$cd libiconv-1.14
$ ./configure --prefix=/usr/local
$ make
$ make install
在/usr/local/lib/目錄下,拷備需要的庫文件libcharset.so.1, libiconv.so.2。
3.在makefiel文件中使用-liconv調用libiconv動態庫文件時,若出現「error while loading sharedlibraries: libiconv.so.2」錯誤,解決方法為:
$updatedb
$locate libiconv.so.2
發現該庫已經安裝,位置在/usr/local/lib/libiconv.so.2。既然已經安裝,為什麼提示找不到?繼續下一步排查。
$strace ./indexer 將列印出所有indexer 啟動時調用的文件及程序名稱,
在輸出的信息中,發現查找庫libiconv.so.2的路徑是/lib目錄和/usr/lib這兩個目錄。
好了,問題找到了,將/usr/local/lib下面該庫鏈接到/usr/lib下面即可
$ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2
$ldconfig
至此,解決該問題。
Ⅸ lib 在windows 和linux 中的區別
Linux中的/lib根目錄下的所程序的共享庫目錄。《Linux就該這么學》此目錄下包含系統引導和在根用戶執行命令時候所必需用到的共享庫。做個不太好但是比較形象的比喻,點類似於Windows上面的system32目錄。理說,這里存放的文件應該是/bin目錄下程序所需要的庫文件的存放地,也不排除一些例外的情況。類似的目錄還/usr/lib,/usr/local/lib等等,這么說你清楚了么