2011-12-02 82 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

相关问题