在 Windows 10 上使用 g++(或 gcc)編譯基于 GTK 的 C 語言程序是完全可行的,且相比 Tcc 更為推薦,因為 g++(GNU 編譯器套件)對 GTK 的支持更加完善,配置也更簡單。以下是詳細步驟和注意事項:
國內阿里鏡像下載 msys2-x86_64-latest.exe
1. 環境準備
(1) 安裝 MSYS2
MSYS2 是 Windows 上的類 Unix 開發環境,提供包管理器 pacman
,可方便安裝 GTK 和編譯工具。
- 下載并安裝 MSYS2。
- 更新軟件包:
pacman -Syu
(2) 安裝 GTK3 開發庫
在 MSYS2 終端中運行:
pacman -S mingw-w64-x86_64-gtk3
Total Download Size: 93.21 MiB
Total Installed Size: 677.30 MiB
(3) 安裝 g++ 或 gcc
根據需要安裝 MinGW-w64 工具鏈(包含 g++ 和 gcc):
pacman -S mingw-w64-x86_64-toolchain
:: There are 13 members in group mingw-w64-x86_64-toolchain:
:: Repository mingw64
···
- mingw-w64-x86_64-binutils 2) mingw-w64-x86_64-crt-git 3) mingw-w64-x86_64-gcc
- mingw-w64-x86_64-gdb 5) mingw-w64-x86_64-gdb-multiarch 6) mingw-w64-x86_64-headers-git
- mingw-w64-x86_64-libmangle-git 8) mingw-w64-x86_64-libwinpthread-git
- mingw-w64-x86_64-make 10) mingw-w64-x86_64-pkgconf 11) mingw-w64-x86_64-tools-git
- mingw-w64-x86_64-winpthreads-git 13) mingw-w64-x86_64-winstorecompat-git
···
Enter a selection (default=all): 3.mingw-w64-x86_64-gcc
Total Download Size: 63.01 MiB
Total Installed Size: 507.50 MiB
2. 編寫示例代碼
創建一個 C 語言文件 app.c
,內容如下:
#include <gtk/gtk.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDOW(window), "GTK on Windows");g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);gtk_widget_show_all(window);gtk_main();return 0;
}
3. 編譯命令
(1) 使用 pkg-config
簡化編譯
GTK 依賴的頭文件和庫路徑可通過 pkg-config
自動獲取:
gcc -o app.exe app.c $(pkg-config --cflags --libs gtk+-3.0)
- 說明:
gcc
:C 編譯器(若代碼為 C++,可替換為g++
)。$(pkg-config ...)
:自動填充 GTK 的頭文件路徑和鏈接庫。-o app.exe
:指定輸出文件名。
(2) 手動指定路徑(備用)
若 pkg-config
不可用,需手動指定路徑(不推薦):
gcc -o app.exe -IC:/msys64/mingw64/include/gtk-3.0 -IC:/msys64/mingw64/include/glib-2.0 ... app.c -LC:/msys64/mingw64/lib -lgtk-3 -lgdk-3 ...
4. 運行程序
- 編譯生成的
app.exe
需要依賴 GTK 的 DLL 文件(如libgtk-3-0.dll
)。 - 解決方法:
- 將 DLL 文件從
C:\msys64\mingw64\bin
復制到app.exe
所在目錄。 - 或將
C:\msys64\mingw64\bin
添加到系統環境變量PATH
中。
- 將 DLL 文件從
5. 常見問題
-
報錯
pkg-config not found
:
確保已安裝pkg-config
:pacman -S mingw-w64-x86_64-pkg-config
-
頭文件或庫缺失:
檢查 GTK 是否安裝正確,路徑是否與編譯命令中的-I
和-L
參數匹配。 -
C 與 C++ 的混用問題:
- 若代碼是純 C 語言,建議使用
gcc
。 - 若代碼包含 C++ 特性(如類、模板),需使用
g++
,并將文件擴展名改為.cpp
。
- 若代碼是純 C 語言,建議使用
6. 替代方案
- 使用集成開發環境(IDE):
- VS Code + GTK 插件。
- Code::Blocks 配置 GTK 項目。
總結
- 完全可行:g++/gcc 在 Windows 10 上編譯 GTK 應用是標準做法,推薦使用 MSYS2 管理依賴。
- 優勢:
- 自動依賴管理(通過
pkg-config
)。 - 支持完整的 C/C++ 標準和 GTK 特性。
- 自動依賴管理(通過
- 適用場景:從簡單示例到大型 GTK 項目均可勝任。