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

Linux與Windows系統下的庫比較

系統 Linux
庫提供一些可以給別的程序調用的東西,別的程序要調用它必須以某種方式指明它要調用之。所以本文章對比Linux和Windows來介紹下庫,讓大家認識,并掌握他。

庫的定義

    庫文件是一些預先編譯好的函數的集合,那些函數都是按照可再使用的原則編寫的。它們通常由一組互相關聯的用來完成某項常見工作的函數構成,從本質上來說庫是一種可執行代碼的二進制形式,可以被操作系統載入內存執行。

無論在 Windows 平臺還是 Linux 平臺下都存在大量的庫,但由于Windows和Linux的本質不同,因此二者的庫的二進制是不兼容的。

庫的分類

Windows下的庫有兩種:靜態庫(.lib)和動態鏈接庫(.dll)。

Linux下的庫有兩種:靜態庫(.a)和共享庫(.so)。

Linux下的靜態庫的名字一般為libxxxx.a,其中xxxx是該lib的名稱

Linux下的動態庫的名字一般為libxxxx.so.major.minor,xxxx是該lib的名稱,major是主版本號,minor是副版本號。

Windows下的庫與Linux下的庫的異同

    Linux 的共享庫(.so)就象Windows的動態鏈接庫(.dll),它里面包含有很多程序常用的函數。為了方便程序開發和減少程序的冗余,程序當中就不用包 含每個常用函數的拷貝,只是在需要時調用共享庫中常函數即可。這種方式我們稱之為動態鏈接(Dynamically Linked)。而有時我們不希望叫程序去調用共享庫的函數,而是把庫函數代碼直接鏈接進程序代碼中,也就是說,在程序本身擁有一份共享庫中函數的副本。 這種方式我們稱之為靜態鏈接(Statically Linked)。

所以,簡單的講靜態庫和共享庫(動態庫)的不同點在于代碼被載入的時刻不同。

靜態庫的代碼在編譯過程中已經被載入可執行程序,因此體積較大。

共享庫的代碼是在可執行程序運行時才載入內存的,在編譯過程中僅簡單的引用,因此代碼體積較小。

Windows下的動態鏈接庫(.dll)與Linux下的共享庫(.so)的差別

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

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

    我們在Windows下做一個.dll文件時還需要攜帶一個.lib文件;而在Linux下一般只需要有相應的頭文件就夠了。對于編寫新的.so,找不到的 符號可以就讓它在那里,直到最終執行文件來把所有需要的符號聯合到一起。windows 可以存在一個.dll對另一個.dll的隱式依賴;而Linux下一般不需要讓.so和.so有隱式依賴關系。

通過上文介紹,大家對庫的概念有了一定的了解,知道了Linux與Windows系統下的庫的不同,希望大家在學習和工作中能多對Linux進行深一步了解。

【編輯推薦】

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

 

 

責任編輯:趙鵬
相關推薦

2010-04-28 17:46:19

2019-12-17 08:39:21

Linuxwindowsoracle

2009-07-03 12:05:14

2014-08-14 17:11:51

LinuxWindows

2010-05-12 15:34:26

MySQL編碼設置

2017-04-13 13:00:27

LinuxWindowstomcat

2017-09-12 14:14:05

2011-01-10 15:55:20

LinuxWindowsWine

2016-11-25 20:52:14

Linux

2011-03-31 11:03:51

系統遷移

2011-09-08 09:46:29

ubuntuMySQL

2012-07-13 15:29:49

2011-08-19 09:21:42

2009-03-18 08:50:59

LinuxWindows系統目錄

2021-12-25 23:25:04

LinuxDocker容器

2012-08-27 13:20:00

CentosUbuntu

2010-01-04 09:33:03

2009-12-31 09:22:36

2012-11-05 09:46:17

路由器操作系統瀏覽器

2009-11-06 10:09:55

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: a毛片| 日韩一级| 国产99视频精品免费播放照片 | 国产伦一区二区三区视频 | a级网站 | 亚洲精品亚洲人成人网 | 成人精品系列 | 欧美色欧美亚洲另类七区 | 亚洲精品久久久久久久久久久 | 亚洲手机视频在线 | 视频在线亚洲 | 97热在线 | 波多野结衣一区二区三区在线观看 | 国产精品一区二区精品 | 日韩国产精品一区二区三区 | 色综合久久久久 | 午夜影院在线观看视频 | 精品国产一区二区三区久久影院 | 粉嫩av在线| 日韩在线一区二区三区 | 亚洲免费在线 | 国产色婷婷精品综合在线手机播放 | 成人在线播放 | 国产精品www| 视频一区在线观看 | 久久一日本道色综合久久 | 日日射夜夜骑 | 日韩免费av| 91av在线视频观看 | 91n成人| 麻豆91av | 久久久视| 欧美一级片免费看 | 欧美一a一片一级一片 | 一区二区三区在线 | 久久久免费观看视频 | 国产成人精品网站 | 人人干人人玩 | 亚洲在线成人 | 91精品国产综合久久久久久 | 日韩中文欧美 |