成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux與Windows系統(tǒng)下的庫(kù)比較

系統(tǒng) Linux
庫(kù)提供一些可以給別的程序調(diào)用的東西,別的程序要調(diào)用它必須以某種方式指明它要調(diào)用之。所以本文章對(duì)比Linux和Windows來介紹下庫(kù),讓大家認(rèn)識(shí),并掌握他。

庫(kù)的定義

    庫(kù)文件是一些預(yù)先編譯好的函數(shù)的集合,那些函數(shù)都是按照可再使用的原則編寫的。它們通常由一組互相關(guān)聯(lián)的用來完成某項(xiàng)常見工作的函數(shù)構(gòu)成,從本質(zhì)上來說庫(kù)是一種可執(zhí)行代碼的二進(jìn)制形式,可以被操作系統(tǒng)載入內(nèi)存執(zhí)行。

無論在 Windows 平臺(tái)還是 Linux 平臺(tái)下都存在大量的庫(kù),但由于Windows和Linux的本質(zhì)不同,因此二者的庫(kù)的二進(jìn)制是不兼容的。

庫(kù)的分類

Windows下的庫(kù)有兩種:靜態(tài)庫(kù)(.lib)和動(dòng)態(tài)鏈接庫(kù)(.dll)。

Linux下的庫(kù)有兩種:靜態(tài)庫(kù)(.a)和共享庫(kù)(.so)。

Linux下的靜態(tài)庫(kù)的名字一般為libxxxx.a,其中xxxx是該lib的名稱

Linux下的動(dòng)態(tài)庫(kù)的名字一般為libxxxx.so.major.minor,xxxx是該lib的名稱,major是主版本號(hào),minor是副版本號(hào)。

Windows下的庫(kù)與Linux下的庫(kù)的異同

    Linux 的共享庫(kù)(.so)就象Windows的動(dòng)態(tài)鏈接庫(kù)(.dll),它里面包含有很多程序常用的函數(shù)。為了方便程序開發(fā)和減少程序的冗余,程序當(dāng)中就不用包 含每個(gè)常用函數(shù)的拷貝,只是在需要時(shí)調(diào)用共享庫(kù)中常函數(shù)即可。這種方式我們稱之為動(dòng)態(tài)鏈接(Dynamically Linked)。而有時(shí)我們不希望叫程序去調(diào)用共享庫(kù)的函數(shù),而是把庫(kù)函數(shù)代碼直接鏈接進(jìn)程序代碼中,也就是說,在程序本身?yè)碛幸环莨蚕韼?kù)中函數(shù)的副本。 這種方式我們稱之為靜態(tài)鏈接(Statically Linked)。

所以,簡(jiǎn)單的講靜態(tài)庫(kù)和共享庫(kù)(動(dòng)態(tài)庫(kù))的不同點(diǎn)在于代碼被載入的時(shí)刻不同。

靜態(tài)庫(kù)的代碼在編譯過程中已經(jīng)被載入可執(zhí)行程序,因此體積較大。

共享庫(kù)的代碼是在可執(zhí)行程序運(yùn)行時(shí)才載入內(nèi)存的,在編譯過程中僅簡(jiǎn)單的引用,因此代碼體積較小。

Windows下的動(dòng)態(tài)鏈接庫(kù)(.dll)與Linux下的共享庫(kù)(.so)的差別

    .dll文件事實(shí)上和.exe文件一樣,同屬 PE 格式的執(zhí)行文件。對(duì)于隱式的引用外部符號(hào),需要把外部符號(hào)所在的位置寫在PE頭上。PE加載器將從PE頭上找到依賴的符號(hào)表,并加載依賴的其它.dll文件。

    而在Linux 上并非如此!.so文件大多為elf執(zhí)行文件格式。當(dāng)它們需要的外部符號(hào),可以不寫明這些符號(hào)所在的位置。也就是說,通常.so文件本身并不知道它依賴的那些符號(hào)在哪些.so里面。這些符號(hào)是由調(diào)用dlopen的進(jìn)程運(yùn)行時(shí)提供的。

    我們?cè)赪indows下做一個(gè).dll文件時(shí)還需要攜帶一個(gè).lib文件;而在Linux下一般只需要有相應(yīng)的頭文件就夠了。對(duì)于編寫新的.so,找不到的 符號(hào)可以就讓它在那里,直到最終執(zhí)行文件來把所有需要的符號(hào)聯(lián)合到一起。windows 可以存在一個(gè).dll對(duì)另一個(gè).dll的隱式依賴;而Linux下一般不需要讓.so和.so有隱式依賴關(guān)系。

通過上文介紹,大家對(duì)庫(kù)的概念有了一定的了解,知道了Linux與Windows系統(tǒng)下的庫(kù)的不同,希望大家在學(xué)習(xí)和工作中能多對(duì)Linux進(jìn)行深一步了解。

【編輯推薦】

  1. 簡(jiǎn)單敘述linux windows區(qū)別
  2. 因用戶不習(xí)慣Linux Windows上網(wǎng)本后來居上
  3. 詳述三種Linux windows雙系統(tǒng)共存問題
  4. Linux文件系統(tǒng)知識(shí)大揭秘
  5. Linux Kernel 2.6.37發(fā)布 Ext4性能提升
  6. 微軟宣布下一代Windows支持ARM處理器
  7. Windows 7安全性需要你知道的五件事
  8. 帶您了解SQL Sever數(shù)據(jù)庫(kù)文件
  9. 3.4 Flex庫(kù)文件SWC

 

 

責(zé)任編輯:趙鵬
相關(guān)推薦

2010-04-28 17:46:19

2019-12-17 08:39:21

Linuxwindowsoracle

2009-07-03 12:05:14

2010-05-12 15:34:26

MySQL編碼設(shè)置

2014-08-14 17:11:51

LinuxWindows

2017-04-13 13:00:27

LinuxWindowstomcat

2011-01-10 15:55:20

LinuxWindowsWine

2017-09-12 14:14:05

2012-07-13 15:29:49

2011-09-08 09:46:29

ubuntuMySQL

2016-11-25 20:52:14

Linux

2011-03-31 11:03:51

系統(tǒng)遷移

2021-12-25 23:25:04

LinuxDocker容器

2011-08-19 09:21:42

2009-03-18 08:50:59

LinuxWindows系統(tǒng)目錄

2012-08-27 13:20:00

CentosUbuntu

2009-12-31 09:22:36

2010-01-04 09:33:03

2015-11-27 15:28:45

WindowsLinuxEasyBCD

2012-11-05 09:46:17

路由器操作系統(tǒng)瀏覽器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲国产精品日本 | 久久综合一区 | 国产精品国产a级 | 日韩综合一区 | 亚洲综合在线一区 | 国产精品视频一区二区三区 | 成人免费大片黄在线播放 | 午夜精品一区二区三区在线视频 | 国产精品久久久久久久久久 | 精品欧美色视频网站在线观看 | 亚洲精品一区二区三区四区高清 | av网站免费在线观看 | 久久91| 久久r久久 | 亚洲欧美自拍偷拍视频 | tube国产| 99精品电影 | 51ⅴ精品国产91久久久久久 | 99久久99 | 国产精品久久久久久久久久了 | av毛片 | 亚洲第一av | 蜜桃传媒一区二区 | 91精品国产91久久久久久 | 午夜影视网 | 欧美区在线 | 99精品欧美一区二区三区综合在线 | 日日夜夜精品视频 | 国产一区二区三区四区区 | 五月槐花香 | 毛片国产| 午夜一区二区三区在线观看 | 国产小视频在线 | 午夜久久久 | 欧美日韩综合 | 天天搞天天操 | 999视频| 一区二区三区在线观看视频 | 成人小视频在线免费观看 | 亚洲一区二区三区在线 | 色资源在线 |