基於GTK+3 開發遠程控制管理軟件(C語言實現)系列三 Windows7開發環境搭建


一、介紹與准備

考慮到目標客戶端基本都是windows客戶端,所以此次開發環境將搭建在windows7下,相關開發工具有Msys2 和 Eclipse For C/C++ 

Msys2 是msys的升級版,更加好用的GNU環境,目前比較推薦的windows下的集成工具。

Eclipse For C/C++ 專門開發C/C++的Eclipse版本。 對於開發java的同學不會陌生。

二、Eclipse For C/C++ 

1、下載Eclipse

https://www.eclipse.org/downloads/eclipse-packages/

2、下載版本建議

Eclipse Luna (4.4)   由於本人筆記本很老了,配置也較低,所以使用了Luna這個版本,個人感覺這個版本比較流暢。

三、Msys2 

1、下載Msys2

http://www.msys2.org/

2、下載版本建議

如果你的windows系統是xp(或者windows7,8,10的32位系統),則建議下載32位的版本,如果是windows7以上的64位系統,則建議下載64位的版本。

3、安裝與配置

安裝:選擇好安裝目錄(建議除C盤以外的其他盤符),一路下一步就可以了。

配置:

相關詳細配置過程請詳見

http://www.cnblogs.com/yunfeng83/p/7348311.html   (MSYS2使用教程)

 

配置要求:我們使用32位的MinGW,所以在下載gcc gtk等相關類庫時,注意使用 i686版本的。

其中在安裝常用工具類庫時,可以只安裝base-devel ,其他git wget 等不用安裝。

 

遇到的問題:

1、使用Eclipse創建C 項目時Toolchains選項會沒有 MinGW GCC

2、項目創建好后,項目的Properties---C/C++ Build中提示“Toolchain "MinGW GCC" is not detected. Refer to "C/C++ Development User Guide", "Before you begin" how to install toolchains.” 

問題解決:

這兩個問題其實是一個地方導致的,就是用msys2 下載編譯的mingw 文件夾下的gcc 找不到,所以Eclipse默認就不會顯示MinGW GCC 和這個提示了。

Eclipse官方給出的解答如下:

http://wiki.eclipse.org/CDT/User/FAQ#I_installed_MinGW_toolchain_on_my_PC_but_Eclipse_won.27t_find_it.

 

需要將下載的i686-w64-mingw32-gcc.exe 重名為mingw32-gcc 就可以了。

我們把i686-w64-mingw32-gcc.exe 復制一下,並重名為mingw32-gcc 就解決這兩個問題了。

 

 

 

四、配置Eclipse

1、創建一個C項目

 

 

 如果按要求配置了gcc,則Eclipse在創建項目時,就會顯示出MinGW GCC 。

可以正常編譯了,就好了。

將GTK類庫配置到Eclipse中去。

1、利用msys2的pkg-config命令得到GTK類庫及其相關路徑。

 

pkg-config gtk+-3.0 --libs > /tmp/libs.txt

 

pkg-config gtk+-3.0 --cflags  > /tmp/cflags.txt

將這些類庫路徑與lib導出到tmp文件夾下的libs 和 cflags 文本文件中。

-mms-bitfields -pthread -mms-bitfields -ID:/msys64/mingw32/include/gtk-3.0 -ID:/msys64/mingw32/include/cairo -ID:/msys64/mingw32/include -ID:/msys64/mingw32/include/pango-1.0 -ID:/msys64/mingw32/include/atk-1.0 -ID:/msys64/mingw32/include/cairo -ID:/msys64/mingw32/include/pixman-1 -ID:/msys64/mingw32/include -ID:/msys64/mingw32/include/freetype2 -ID:/msys64/mingw32/include/libpng16 -ID:/msys64/mingw32/include/harfbuzz -ID:/msys64/mingw32/include/glib-2.0 -ID:/msys64/mingw32/lib/glib-2.0/include -ID:/msys64/mingw32/include -ID:/msys64/mingw32/include/freetype2 -ID:/msys64/mingw32/include -ID:/msys64/mingw32/include/harfbuzz -ID:/msys64/mingw32/include/libpng16 -ID:/msys64/mingw32/include/gdk-pixbuf-2.0 -ID:/msys64/mingw32/include/libpng16 -ID:/msys64/mingw32/include/glib-2.0 -ID:/msys64/mingw32/lib/glib-2.0/include -ID:/msys64/mingw32/include

 

 

-LD:/msys64/mingw32/lib -lgtk-3 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lz -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl

 

 將cflags文件中開頭到 -mms-bitfields -I 部分去掉,然后每路徑前面的 -I 去掉,還有 D:/msys64/mingw32/include 也會多次出現,去掉重復的。

最終得到

D:/msys64/mingw32/include/gtk-3.0
D:/msys64/mingw32/include/cairo
D:/msys64/mingw32/include/pango-1.0
D:/msys64/mingw32/include/atk-1.0
D:/msys64/mingw32/include/cairo
D:/msys64/mingw32/include/pixman-1
D:/msys64/mingw32/include/freetype2
D:/msys64/mingw32/include/libpng16
D:/msys64/mingw32/include/harfbuzz
D:/msys64/mingw32/include/glib-2.0
D:/msys64/mingw32/lib/glib-2.0/include
D:/msys64/mingw32/include/freetype2
D:/msys64/mingw32/include/harfbuzz
D:/msys64/mingw32/include/libpng16
D:/msys64/mingw32/include/gdk-pixbuf-2.0
D:/msys64/mingw32/include/libpng16
D:/msys64/mingw32/include/glib-2.0
D:/msys64/mingw32/lib/glib-2.0/include 
D:/msys64/mingw32/include

將上面部分復制

 

 在Include path的下面鼠標單擊一下,然后Ctrl+ V 進行粘貼。將這些指復制過去。

 

 再將libs.txt文件中的類庫名稱和 路徑名稱復制下來(去掉類庫名稱前面的-l),以照上面的操作步驟,把MinGW C Linker中的 Libraies 值賦值出來。

D:/msys64/mingw32/lib 
gtk-3
gdk-3
gdi32
imm32
shell32
ole32
uuid
winmm
dwmapi
setupapi
cfgmgr32
z
pangowin32-1.0
pangocairo-1.0
pango-1.0
atk-1.0
cairo-gobject
cairo
gdk_pixbuf-2.0
gio-2.0
gobject-2.0
glib-2.0
intl

 

最終結果如下圖

 

 設置完成后 ‘Apply’ 這樣就完成了所有配置,我們在coding時,也會有智能提示了。

我們把剛才新建的那個項目的Demo.c文件 ,重新編寫。

/*
 ============================================================================
 Name        : Demo.c
 Author      : GtkDemo
 Version     :
 Copyright   : Your copyright notice
 Description : Hello World in C, Ansi-style
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>

int main(int argc,char *argv[]) {
    //puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
    //return EXIT_SUCCESS;
    GtkWidget *window;
    gtk_init(&argc,&argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    gtk_widget_show(window);

    gtk_main();

    return EXIT_SUCCESS;

}

 

 然后重新編譯

 

 

 智能提示也有了。

運行結果。

OK。這樣就可以正式的編寫代碼了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM