2011-12-02 114 views
2

我安裝了Fedora(最新版本)以及mingw32和gtk包。使用MinGW在Fedora上交叉編譯GTK

我寫了簡單的Hello World:

#include <gtk/gtk.h> 

int main(int argc, char* argv[]){ 
    GtkWidget *window; 

    gtk_init(&argc, &argv); 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
    gtk_widget_show(window); 

    gtk_main(); 

    return 0; 
} 

我可以很容易地編譯Fedora中:

gcc -o hello hello.c 'pkg-config --libs --cflags gtkmm-3.0' 

(錯在這裏撇號)

我也試圖編譯簡單printf("Hello world");程序(沒有gtk)的窗口與:i686-pg-mingw32-gcc simple.c -o simple.exe和它在Windows下完美工作

但是我不能交叉編譯使用GTKmm的窗口(即使使用其他版本的GTK也是如此)。我讀這http://camltastic.blogspot.com/2008/10/mingw-compile-software-for-windows.html,但它使用配置和製作,我沒有我的程序。

也有很多那裏:http://ricardo.ecn.wfu.edu/~cottrell/cross-gtk/但它談論自己安裝mingw自定義文件夾等等,但我已經安裝使用Fedora yum的mingw。

對於每一個提示,先謝謝您,我再次嘗試一次,所以關於如何簡單地從Fedora執行GTKmm應用程序到Windows的每一個手冊都會爲我祝福。

所有m羅德里戈的提示後

更新:

要羅德里戈:

YES!我們得到了它!這是working。它首先啓動控制檯,但沒關係。我也沒有測試過所有的GTK庫,但我認爲它們也應該可以工作。在經歷了一年的努力之後,我終於擁有了它,並且我最接近於開發過曾經的GUI應用程序。所以感謝你LOT爲你的耐心和指導,從現在開始你對我將要做的每一個GUI應用程序都表示感謝,你也成爲我的personal jesus,因爲從我開始編碼以來,這對我來說是非常重要的。我想,現在我也似乎明白這一切是如何工作的(我的意思是,對於不同的操作系統,pkg配置,傳遞變量等編譯庫)

再次非常感謝:-)

互聯網是奇妙的地方有時

+0

特別提示:您可以刪除通過'-mwindows'(默認是'-mconsole')連接器命令的控制檯。但是我個人覺得它在調試版本中很有用,可以查看GLIB警告和其他輸出。 – rodrigo

回答

1

您已經從Fedora存儲庫安裝了mingw,但您仍然需要爲Windows編譯的GTK庫。你可以自己編譯它們(不是微不足道的,但也不是非常困難),或者你可以在別處下載它們,就像你引用的頁面所建議的那樣。

更新:關於你嘗試在下面的評論:

I fixed pc files I copied into /usr/lib/pkgconfig and here is my log: pastebin.com/KZr8tMQ0 I really don't understand. When I run pkg-config it's missing gobject. When I run it as root it's missing gdk. When I run it with gtkmm-3.0 it generates parameters...when I run it with gtkmm-2.4 it crash even if gtkmm-2.4 is actualy the only gtkmm pc file I have in folder set in PKG_CONFIG_PATH.

  • 您沒有GTK的3.0也不gtkmm的-3.0的Windows。所以它並不奇怪,它說:在pkg-config搜索路徑中找不到包gtkmm-3.0。使用pkg-config gtkmm-2.4
  • 你有gtkmm-2.4 &朋友的Windows,但你缺乏gtk + -2.0(沒有gtk + -2.0.pc文件)及其所有依賴項(pango,cairo,gdk,atk,glib ...)。
  • 您不應該使用sudo運行pkg-config或編譯器。出於安全原因,Sudo不轉發大多數環境變量。這就是爲什麼sudo pkg-config忽略你的Windows安裝。
  • 最後,PKG_CONFIG_PATH用於添加額外的路徑來搜索.pc文件。如果你的所有文件都在同一個目錄中,設置PKG_CONFIG_LIBDIR就足夠了,但是你設置錯了,它應該是lib/pkgconfig目錄。
+0

好的 - 好像我必須下載GTKmm並編譯爲windows。因爲建議的網站http://www.gimp.org/~tml/gimp/win32/downloads.html已關閉。這裏(http://live.gnome.org/gtkmm/MSWindows)只是exe安裝程序。所以我必須使用這個源http://ftp.gnome.org/pub/GNOME/sources/gtkmm/3.3/和本手冊http://live.gnome.org/gtkmm/MSWindows/BuildingGtkmm來創建一個GTKmm窗口版本我?完成後......我將如何使用它來創建我的應用程序? – user1023979

+0

如果您想要像示例中那樣使用'pkg-config',只需導出'PKG_CONFIG_PATH'環境變量以指向Windows的* .pc文件所在的位置。例如,在我的安裝中,我有'PKG_CONFIG_LIBDIR = $ HOME/mingw/sysroot/mingw/lib/pkgconfig'。然後運行'i686-pg-mingw32-g ++ -o test-gtk test-gtk.cpp'pkg-config --libs --cflags gtkmm-3.0'將會正常工作。 – rodrigo

+0

因此,我下載了Windows的GTKmm安裝程序,在Windows上安裝它,然後將整個文件夾複製到Fedora。我在GTKmm安裝的./lib/pkgconfig中有9個.pc文件。我無法說服pkg-config從這個文件夾中使用pc文件(雖然我設置了PKG_CONFIG_PATH和PKG_CONFIG_LIBDIR變量),所以我將這些.pc文件複製到/ usr/lib/pkgconfig(這是從中獲取文件的地方),但當我現在嘗試通過運行pkg-config時:sudo pkg-config --libs --cflags gtkmm-3.0它會讓我變成「包'gdkmm'需要'pangomm-1.4> = 2.27.1',但是Pangomm的版本是2.8.8「錯誤 – user1023979

相關問題