Linux環境上zlib1 2 8安裝及配置

2021-07-11 18:40:30 字數 2499 閱讀 6749

zlib是提供

資料壓縮

用的函式庫,由jean-loup gailly與mark adler所開發,初版0.9版在2023年5月1日發表。zlib使用deflate演算法,最初是為libpng函式庫所寫的,後來普遍為許多軟體所使用。此函式庫為自由軟體,使用zlib授權。截至2023年3月,zlib是包含在coverity的

美國國土安全部

贊助者選擇繼續審查的開源專案。

zlib能使用乙個gzip資料頭,zlib資料頭或者不使用資料頭壓縮資料。

通常情況下,

資料壓縮使用zlib資料頭,因為這提供錯誤資料檢測。當資料不使用資料頭寫入時,結果是沒有任何錯誤檢測的原始deflate資料,

那麼 解壓縮軟體的呼叫者不知道壓縮資料在什麼地方結束。

gzip資料頭比zlib資料頭要大,因為它儲存了檔名和其他檔案系統資訊,事實上這是廣泛使用的gzip檔案的資料頭格式。

注意zlib函式庫本身不能建立乙個gzip檔案,但是它相當輕鬆的通過把壓縮資料寫入到乙個有gzip

檔案頭的檔案中。

目前zlib僅支援乙個lz77的變種演算法,deflate的演算法。

這個演算法使用很少的系統資源,對各種資料提供很好的壓縮效果。這也是在zip檔案中無一例外的使用這個演算法。(儘管zip檔案格式也支援幾種其他的演算法)。

看起來zlib格式將不會被擴充套件使用任何其他演算法,儘管資料頭可以有這種可能性。

函式庫提供了對處理器和記憶體使用控制的能力

不同的壓縮級別數值可以指示不同的壓縮執行速度。

還有記憶體控制管理的功能。這在一些諸如

嵌入式系統這樣記憶體有限制的環境中是有用的。

壓縮可以針對特定型別的資料進行優化

如果你總是使用zlib庫壓縮壓縮特定型別的資料,那麼可以使用有針對性的策略可以提高壓縮效率和效能。例如,如果你的資料報含很長的重複資料,那麼可以用rle(首席執行官度編碼)策略,可能會有更好的結果。

對於一般的資料,預設的策略是首選。

錯誤可以被發現和跳過

資料混亂可以被檢測(只要資料和zlib或者gzip資料頭一起被寫入-參見上面)

此外,如果全重新整理點(full-flush points)被寫入到壓縮後的資料流中,那麼錯誤資料是可以被跳過的,並且

解壓縮將重新同步到下個全重新整理點。(錯誤資料的無錯恢復被提供)。全重新整理點技術對於在不可靠的通道上的大資料流是很有用的,一些過去的資料丟失是不重要的(例如多**資料),但是建立太多的全重新整理點會極大的影響速度和壓縮。

對於壓縮和

解壓縮,沒有資料長度的限制

重複呼叫

庫函式允許處理無限的

資料塊。一些輔助**(計數變數)可能會溢位,但是不影響實際的壓縮和解壓縮。

當壓縮乙個長(無限)資料流時,最好寫入全重新整理點。 編輯

今天,zlib是一種事實上的業界標準,以至於在標準文件中,zlib和deflate常常互換使用。數以千計的應用程式直接或間接依靠zlib壓縮函式庫,包括:

* linux核心:使用zlib以實作網路協定的壓縮、檔案系統的壓縮以及開機時

解壓縮自身的核心。

* libpng,用於png圖形格式的乙個實現,對bitmap資料規定了deflate作為流壓縮方法。

* apache:使用zlib實作http 1.1。

* openssh、openssl:以zlib達到最佳化加密網路傳輸。

* ffmpeg:以zlib讀寫matroska等以deflate演算法壓縮的多**串流格式。

* rsync:以zlib最佳化遠端同步時的傳輸。

* the dpkg and rpm package managers, which use zlib to unpack files from compressed software packages.

* subversion 、git和 cvs 

版本控制 系統,使用zlib來壓縮和遠端倉庫的通訊流量。

* dpkg和rpm等包管理軟體:以zlib

解壓縮rpm或者其他

封包。因為其**的可移植性,寬鬆的許可以及較小的記憶體占用,zlib在許多

嵌入式裝置中也有應用。

上述是對zlib的乙個簡述,下面是對zlib1.2.8安裝及配置:(linux能連線外網)

執行命令:wget

2、對tar進行解壓

tar -xzvf

zlib-1.2.8.tar.gz

3.指定安裝路徑

./configure --prefix=/usr/local/zlib/zlib1.2.8/data/zlib(可以自己設定)

4、編譯

根目錄下:make

5、安裝

根目錄下:make install

6、系統配置

cd /etc/ld.so.conf.d進入當前目錄,新建zlib.conf檔案,在檔案寫入:--prefix的value值,如:

/usr/local/zlib/zlib1.2.8/data/zlib

7、載入配置

執行命令:ldconfig

經過上述步驟,就完成了zlib安裝!

windows上編譯zlib 1 2 8記錄

應需求變更需要。我們要將原先專案中zlib的功能,移植到新專案上。移植完成後,編譯,出現一大堆問題,如下所示 從上圖,可以看出。是定義的介面,找不到相應的lib庫導致的。為了解決這個問題,我從以下三次入手 1 檢視 是否移植完成。2 檢視屬性是否配置ok。主要檢查以下兩項 圖1 圖2 通過比對,屬性...

vs2013編譯zlib1 2 8庫解決方案

一 zlib庫的編譯 1.首先開啟vs2013的command prompt 32bit 也就是命令提示視窗。2.進入到zlib 1.2.5 contrib masmx86目錄,執行bld ml32.bat。同理,64位的電腦進入masmx64目錄,執行bld ml64.bat 這一步執行bld m...

PC上LINUX環境搭建

1.安裝linux 本人是64位系統 vm版本 vmware workstation full 8.0.2 591240 後來發現裝不上32位的庫。又裝了一下32位的12.04.飛凌使用者盤提供的。安裝有這樣乙個提示 piix4 smbus host smbus controller not ena...