[Linux] 在 CentOS 7 上編譯 lib7zip

[Linux] 在 CentOS 7 上編譯 lib7zip

之前的專案是用 p7zip 的 CLI 直接處理壓縮檔,

不過因為 p7zip CLI 還是有蠻多東西沒辦法處理 (像是密碼要給 DBCS 或特殊符號之類的),

想要完全的 7zip 功能的話,就得直接呼叫 7z.so 才行~

因為 7z.so 提供的似乎是類似 COM 的 interface,

所以 lib7zip 做了一層包裝,讓我們可以用 C++ class 的方式來使用 7z.so~

 

下面就記錄一下如何編譯 lib7zip 吧~

 

1. 取得 p7zip 與 lib7zip 的原始碼

編譯 lib7zip 時也需要 p7zip 的原始碼,我下載的是:

p7zip_9.20.1_src_all.tar.bz2

lib7zip-1.6.5.tar.gz

 

下載之後,分別將它們解壓縮:

tar jxvf p7zip_9.20.1_src_all.tar.bz2
tar zxvf lib7zip-1.6.5.tar.gz

 

2. 執行 configure

進到 lib7zip 的目錄後,直接執行 ./configure 的話,

就會出現一個 P7ZIP_SOURCE_DIR 環境變數尚未設定的錯誤:

[root@d55259c50087 lib7zip-1.6.5]# ./configure
......
configure: error: in `/root/lib7zip-1.6.5':
configure: error: P7ZIP_SOURCE_DIR is not set
See `config.log' for more details

 

這個  P7ZIP_SOURCE_DIR 指的是 p7zip 原始碼所在的位置,

像我們剛剛把 p7zip 解到 /root 目錄下的話,就要把這個環境變數設定好,

再執行 ./configure,就不會出現問題了:

P7ZIP_SOURCE_DIR=/root/p7zip_9.20.1 ./configure

 

3. 開始編譯

執行 make 就可以開始編譯了:

make

 

編譯好的 lib7zip.so 會放在 Lib7Zip/.libs 目錄下面:

[root@d55259c50087 lib7zip-1.6.5]# ll Lib7Zip/.libs/*.so*
lrwxrwxrwx. 1 root root     16 Dec 31 16:45 Lib7Zip/.libs/lib7zip.so -> lib7zip.so.0.0.0
lrwxrwxrwx. 1 root root     16 Dec 31 16:45 Lib7Zip/.libs/lib7zip.so.0 -> lib7zip.so.0.0.0
-rwxr-xr-x. 1 root root 983246 Dec 31 16:45 Lib7Zip/.libs/lib7zip.so.0.0.0

 

有了 lib7zip.so 之後,就可以開始使用它提供的 C++ class 如 C7ZipLibrary 囉~

 

(本頁面已被瀏覽過 380 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料