萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Ubuntu 編譯安裝 libgdiplus 2.10.9 遇到 freetype 與 glib 鏈結錯誤完整解決方案

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

libgdiplus 編譯錯誤示意圖

環境與錯誤現象

# 配置
./configure --prefix=/usr
make
# 錯誤 1:
gdiplus-private.h:33:31: fatal error: freetype/tttables.h: No such file or directory

解決錯誤 1:freetype 標頭路徑不匹配

系統已安裝 libfreetype6-dev,標頭檔在 /usr/include/freetype2/freetype/,但原始碼期望 /usr/include/freetype/。

# 建立符號連結
sudo ln -s /usr/include/freetype2 /usr/include/freetype
# 重新 make

解決錯誤 2:鏈結階段缺少 glib-2.0 與 X11 庫

# 錯誤訊息
/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

解決步驟:

  1. 重新執行 ./configure 產生最新 Makefile。
  2. 編輯 test/Makefile,找到第 130 行 LIBS 定義:
    原:LIBS = -lpthread -lfontconfig
    改:LIBS = -lpthread -lfontconfig -lglib-2.0 -lX11
  3. 再次執行 make,編譯通過。
  4. sudo make install 安裝至 /usr。

驗證安裝

ls /usr/lib/libgdiplus*
# 應顯示 libgdiplus.so.0.0.0 等檔案

根本原因分析

  • libgdiplus 2.10.9 的 configure.ac 未正確偵測 freetype2 的標頭路徑變更。
  • 測試程式 testgdi 的鏈結指令缺少 -lglib-2.0 -lX11,導致符號解析失敗。
  • 手動修補 Makefile 是快速解決之道;長期應回報上游或使用發行版套件 libgdiplus-dev。

遇到類似「標頭檔找不到」或「鏈結符號缺失」錯誤,優先檢查 pkg-config --cflags --libs freetype2 glib-2.0 輸出路徑,再對應修正編譯參數。

copyright © 萬盛學電腦網 all rights reserved