在 Ubuntu 14.04 LTS 64-bit 上從原始碼編譯安裝 libgdiplus 2.10.9 時,常遇到兩個編譯/鏈結錯誤:找不到 freetype/tttables.h 與 libglib-2.0 符號缺失。本文記錄完整解決流程:建立 freetype 標頭符號連結、修改 Makefile 鏈結庫順序。

# 配置
./configure --prefix=/usr
make
# 錯誤 1:
gdiplus-private.h:33:31: fatal error: freetype/tttables.h: No such file or directory
系統已安裝 libfreetype6-dev,標頭檔在 /usr/include/freetype2/freetype/,但原始碼期望 /usr/include/freetype/。
# 建立符號連結
sudo ln -s /usr/include/freetype2 /usr/include/freetype
# 重新 make
# 錯誤訊息
/usr/lib64/libglib-2.0.so.0: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
make[2]: *** [testgdi] Error 1
解決步驟:
./configure 產生最新 Makefile。test/Makefile,找到第 130 行 LIBS 定義:LIBS = -lpthread -lfontconfigLIBS = -lpthread -lfontconfig -lglib-2.0 -lX11make,編譯通過。sudo make install 安裝至 /usr。ls /usr/lib/libgdiplus*
# 應顯示 libgdiplus.so.0.0.0 等檔案
configure.ac 未正確偵測 freetype2 的標頭路徑變更。testgdi 的鏈結指令缺少 -lglib-2.0 -lX11,導致符號解析失敗。libgdiplus-dev。遇到類似「標頭檔找不到」或「鏈結符號缺失」錯誤,優先檢查 pkg-config --cflags --libs freetype2 glib-2.0 輸出路徑,再對應修正編譯參數。