天天看點

《gcc五分鐘系列》第十七節:庫的使用(一):使用

gcc五分鐘系列

半年以前的事情了。 有一次,我在一個c項目中需要讀寫zip壓縮封包件。很幸運地,我發現了libzip庫。[http://packages.debian.org/squeeze/libzip-dev] 然後,一切問題就都解決了。 咋解決的?聽我慢慢道來。

程式設計中,有一件很神奇的事情,叫做 複用 。通常,我們将一個功能封裝在一個函數中,目的是為了以後遇見相同功能的時候,不需要把這個函數再寫一遍。 可是,函數級别的複用有時候會顯得力不從心。是以,出現了 庫 技術。 庫的優點有很多,例如:

它是編譯好的二進制檔案,體積小,不需要使用者自己編譯。

釋出簡單。使用友善。

通常,庫根據連結方式的不同,分為兩種:靜态連結和動态連結。這裡我們先介紹動态連結的方法。

我寫了一個簡單的程式,zipdemo,它的目的是輸出一個zip包裡的檔案清單。 使用libzip,一共分為三步。

這裡需要注意一下,軟體包libzip包含的是運作時庫,而我們需要的是開發庫,也就是libzip-dev。

函數的清單及每個函數的詳細介紹可以在libzip的man手冊中找到。

zipdemo源代碼及makefile可以參見本項目git倉庫。

附1.從本節起,本系列改用markdown文法,使用github.com的markdown解釋器。 本項目的github.com位址為:[https://github.com/lexdene/gcc_five_minute]。 本項目的51cto.com專題位址為:[http://blog.51cto.com/zt/229] 附2.其實 debian 的軟體倉庫裡面基本上已經涵蓋了我們需要的各類程式設計庫,尤其以c庫居多。 每次當我需要某功能的時候,我都會先在 debian 的軟體倉庫中搜尋一下,有沒有已經提供的庫。 搜尋位址:[http://www.debian.org/distrib/packages]