国产探花免费观看_亚洲丰满少妇自慰呻吟_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庫文件的概念。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 文安县| 衡东县| 古蔺县| 错那县| 铁岭市| 双峰县| 沁阳市| 九台市| 灯塔市| 武冈市| 辉南县| 鄂伦春自治旗| 廊坊市| 平舆县| 桐庐县| 乌审旗| 汉阴县| 小金县| 饶河县| 宁强县| 鹤岗市| 高邑县| 修武县| 株洲市| 福泉市| 五峰| 芮城县| 庄浪县| 鄯善县| 隆德县| 荣昌县| 武清区| 塔河县| 迁安市| 绩溪县| 洪江市| 泸西县| 图木舒克市| 敦化市| 隆化县| 桂阳县|