国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

完全秘籍:概述Linux庫文件含義

2024-08-27 23:58:31
字體:
來源:轉載
供稿:網友

經過長時間學習linux庫文件的概念,今天小編也給大家搜集了關于庫的概念以及作用,希望大家看后會有很多收獲.

1.什么是linux庫

在windows平臺和linux平臺下都大量存在著庫。本質上來說庫是一種可執行代碼的二進制形式,可以被操作系統載入內存執行。由于windows和linux的本質不同,因此二者庫的二進制是不兼容的。本文僅限于介紹linux下的庫。

2.linux庫的種類

linux庫有兩種:靜態庫和共享庫。二者的不同點在于代碼被載入的時刻不同。靜態庫的代碼在編譯過程中已經被載入可執行程序,因此體積較大。共享庫的代碼是在可執行程序運行時才載入內存的,在編譯過程中僅簡單的引用,因此代碼體積較小。

3.庫存在的意義

庫是別人寫好的現有的,成熟的,可以復用的代碼,你可以使用但要記得遵守許可協議。現實中每個程序都要依賴很多基礎的底層庫,不可能每個人的代碼都從零開始,因此庫的存在意義非同尋常。共享庫的好處是,不同的應用程序如果調用相同的庫,那么在內存里只需要有一份該共享庫的實例。

4.庫文件是如何產生的在linux下

靜態庫的后綴是.a,它的產生分兩步

Step 1.由源文件編譯生成一堆.o,每個.o里都包含這個編譯單元的符號表

Step 2.ar命令將很多.o轉換成.a,成文靜態庫

動態庫的后綴是.so,它由gcc加特定參數編譯產生。

例如:

$ gcc -fPIC -c *.c $ gcc -shared -Wl,-soname, libfoo.so.1 -o libfoo.so.1.0 *.

5.linux庫文件是如何命名的,有沒有什么規范

在linux下,庫文件一般放在/usr/lib /lib下,靜態庫的名字一般為libxxxx.a,其中xxxx是該lib的名稱動態庫的名字一般為libxxxx.so.major.minor,xxxx是該lib的名稱,major是主版本號,minor是副版本號

6.如何知道一個可執行程序依賴哪些庫

ldd命令可以查看一個可執行程序依賴的共享庫,例如# ldd /bin/lnlibc.so.6

=> /lib/libc.so.6 (0×40021000)/lib/ld-linux.so.2

=> /lib/ld- linux.so.2 (0×40000000)

可以看到ln命令依賴于libc庫和ld-linux庫

7.可執行程序在執行的時候如何定位共享庫文

當系統加載可執行代碼時候,能夠知道其所依賴的庫的名字,但是還需要知道絕對路徑此時就需要系統動態載入器(dynamic linker/loader)對于elf格式的可執行程序,是由ld-linux.so*來完成的,它先后搜索elf文件的 DT_RPATH段—環境變量LD_LIBRARY_PATH—/etc/ld.so.cache文件列表—/lib/,/usr/lib目錄找到庫文件后將其載入內存

8.在新安裝一個庫之后如何讓系統能夠找到他

如果安裝在/lib或者/usr/lib下,那么ld默認能夠找到,無需其他操作。

如果安裝在其他目錄,需要將其添加到/etc/ld.so.cache文件中,步驟如下

1.編輯/etc/ld.so.conf文件,加入庫文件所在目錄的路徑

2.運行ldconfig,該命令會重建/etc/ld.so.cache文件

以上給大家講解的是linux庫文件的概念。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仪征市| 梅河口市| 龙里县| 永城市| 黔江区| 景宁| 德江县| 柘荣县| 玉环县| 扶风县| 黄骅市| 交城县| 新宾| 桓仁| 宁津县| 枣庄市| 梅河口市| 淳化县| 高要市| 九台市| 新闻| 兴文县| 宽城| 邢台县| 肇源县| 古田县| 伊春市| 邯郸市| 如皋市| 德化县| 丽水市| 酉阳| 南京市| 辽阳县| 阳高县| 阜新市| 台南市| 宁城县| 普定县| 徐汇区| 谷城县|