[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 的原始碼,我下載的是:
下載之後,分別將它們解壓縮:
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 囉~
(本頁面已被瀏覽過 385 次)