[Linux] 使用 meson 與 ninja 編譯新版 glib 2.67.4

[Linux] 使用 meson 與 ninja 編譯新版 glib 2.67.4

專案裡用到了舊版的 glib 2.28.8,

Black Duck 掃出來有安全性的疑慮,因此得把它升級。

只是沒想到,glib 的編譯方式,

從以往常見的 configure + make + make install,

改成了另一組新穎少見的 meson + ninja

著實讓我花了好一段時間,才能順利編譯。

下面就簡短紀錄一下流程…

 

1. 安裝 Python 3

meson 是一套基於 Python 3 的編譯工具,

因此要用 meson,得先裝好 Python 3 (還得至少要 Python 3.6 或以上)…

(有點不太對等啊,為了裝一個小 meson 得裝一個大 Python 3,

在新版的 Linux 是沒問題,但在像舊版的 CentOS 6 上要安裝,可是麻煩不少…)

 

在 CentOS 上,可以用 yum 安裝 Python 3:

sudo yum -y install python3

 

2. 安裝 meson

用 pip3 安裝 meson:

sudo pip3 install meson

 

在某些機器上,不知道為什麼已經裝好了 Python 3 卻沒有 pip3…

這時可以改執行下面指令:

sudo python3 -m pip install meson

 

3. 安裝 ninja

ninja 可以用原始碼編譯,也可以直接抓編譯好的二進位檔來用,

我貪圖方便,是直接拿二進位檔來用,

把 ninja 這個執行檔直接解壓縮到 /usr/local/bin 目錄下:

wget https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-linux.zip
sudo unzip ninja-linux.zip -d /usr/local/bin/

 

4. 編譯 glib 2.67.4

編譯 glib 時,先執行 meson,再執行 ninja。

下面的例子中,示範了如何把 LDFLAGS, CFLAGS, CC 等環境變數,

以及一些 glib 特有的變數 (如 gtk_doc, man, tests 等等),帶入給 meson:

wget https://download.gnome.org/sources/glib/2.67/glib-2.67.4.tar.xz
tar xvf glib-2.67.4.tar.xz
cd glib-2.67.4

export LDFLAGS="-Wl,-rpath='/usr/lib/64:/test/lib'"
export CFLAGS="-g -fPIC -m64 -fstack-protector-all"
export CC="/usr/bin/gcc"

meson -Dgtk_doc=false -Dman=false -Dtests=false _build
ninja -C _build

 

編譯好的 glib 會在類似 _build/glib/libglib-2.0.so 這種地方,

找不到的話,用 find 在 _build 目錄裡找找看,應該就可以囉~

 

參考資料:Compiling the GLib package: GLib Reference Manual

(本頁面已被瀏覽過 3,710 次)

發佈留言

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

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