linux的庫文件
A. 請問linux里頭文件與庫文件有什麼區別
頭文件中有函數的申明,庫文件實現函數的定義。
比如,printf函數。使用時應包括stdio.h,打開stdio.h你只能看到,printf這
個函數的申明,卻看不到printf具體是怎麼實現的,而函數的實現在相應的C庫
中。而庫文件一般是以二進制形式而不是C源文件形式提供給用戶使用的。程序
中包括了stdio.h這個頭文件。鏈接器就能根據頭件中的信息找到printf這個函
數的實現並鏈接進這個程序代碼段里。
總結起來就是,庫文件通過頭文件向外導出介面。用戶通過頭文件找到庫文件中
函數實現的代碼從而把這段代碼鏈接到用戶程序中去。
B. linux中庫文件的作用
yum是一個軟體安裝源,rpm是一個軟體包管理程序。
yum可以在線安裝軟體,可以自動解決依賴性問題。
比如你聯網的情況下要安裝httpd,你就使用yum install httpd
而你在網上下載了rpm包,就使用rpm -ivh httpd.rpm
使用rpm的話,需要自己解決依賴性問題。
C. 查看linux當前載入庫文件的命令
ldd <可執行文件名> 查看可執行文件鏈接了哪些 系統動態鏈接庫
nm <可執行文件名> 查看可執行文件裡面有哪些符號
strip <可執行文件名> 去除符號表可以給可執行文件瘦身
如果我們想從可執行程序裡面提取出來一點什麼文本信息的話,還可以用strings命令
strings <可執行文件名>
Linux操作系統上面的動態共享庫大致分為三類:
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
輸出結果為:
/usr/local/ImageMagick/lib/libWand.so.10
/usr/local/ImageMagick/lib/libWand.so
/usr/local/ImageMagick/lib/libMagick.so.10
/usr/local/ImageMagick/lib/libMagick.so
/usr/local/ImageMagick/lib/libMagick++.so.10
/usr/local/ImageMagick/lib/libMagick++.so
已經成功了!
3、應用程序獨享的動態共享庫
有很多共享庫只被特定的應用程序使用,那麼就沒有必要加入系統庫路徑,以免應用程序的共享庫之間發生版本沖突。因此Linux還可以通過設置環境變數LD_LIBRARY_PATH來臨時指定應用程序的共享庫搜索路徑,就像我們上面舉的那個例子一樣,我們可以在應用程序的啟動腳本裡面預先設置 LD_LIBRARY_PATH,指定本應用程序附加的共享庫搜索路徑,從而讓應用程序找到它。
D. 關於 Linux c 的函數庫文件的 路徑問題
要學會用man,特別是man2(系統調用)和man3(C函數庫),比如:
mansqrt
會顯示需要引用的頭文件,編譯時需要的動態鏈接庫
如果重復,則需要指定手冊章節,比如
manwrite顯示的是write程序幫助,如果想看系統調用,則要輸入man2wirte
另外,/lib64:/lib:/usr/lib64:/usr/lib這些是系統預設的,不用指定
E. 如何手動安裝linux 庫文件
linux 下的 的 庫 都是 一個個 程序包 要安裝的 debian或者Ubuntu 下用 sudo apt-get install 程序包 redhat 或者 fedora 下 用 yum Good luck
F. linux下C語言的庫函數的頭文件放在哪個目錄下啊
一般來說是放在/usr/include目錄下的;
但是這個並不局限也是可控的,如果我們進行開發過程中, 就會在內核的庫函數文件目錄:
例如在:/XXX/XXX/linux-X.X/include
所以根據不同的情況,頭文件存放的目錄也是不同的,具體需要可以根據locate和grep命令進行查詢。
G. Linux系統的庫文件一般放在( )目錄下
Linux的系統文件放在/bin、/sbin和/usr目錄下。/bin是比較重要的系統二進制文件,都可以在單用戶模式下執行,cat和ls命令都在這里。
/usr命令包含所有系統類的命令和函數庫,/sbin命令包含的是只能用root用戶才能執行的命令。這三個目錄都是只有root用戶才有寫入許可權。更多命令介紹可查看「Linux命令大全」。