使用MinGW在Fedora上交叉编译GTK

时间:2011-12-02 16:14:08

标签: gtk mingw cross-compiling fedora gtkmm

我安装了Fedora(最新)以及mingw32和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");的Windows编译简单的i686-pg-mingw32-gcc simple.c -o simple.exe程序(没有gtk),它在Windows下完美运行

但是我不能用GTKmm对windows进行交叉编译(即使是另一个版本的GTK的例子也会很棒)。我读了这个http://camltastic.blogspot.com/2008/10/mingw-compile-software-for-windows.html,但它使用了我没有用于我的程序的configure和make。

那里还有很多:http://ricardo.ecn.wfu.edu/~cottrell/cross-gtk/但它谈到自己安装mingw到自定义文件夹等等......但我已经使用Fedora yum安装了mingw。

更新

所有罗德里戈的提示后更新:

YES!我们得到了它!它正在发挥作用。它首先启动控制台,但没关系。我还没有测试过所有的GTK库,但我认为它们也可以正常工作。

经过一年的努力,我终于拥有了它,而且我最接近开发GUI应用程序。非常感谢您的耐心和指导。我想现在我也在某种程度上理解这一切是如何工作的(我的意思是,为不同的操作系统编译库,pkg-config,传递变量等)。

1 个答案:

答案 0 :(得分:1)

您已从Fedora存储库安装了mingw,但仍需要为Windows编译的GTK库。您可以自己编译它们(不是微不足道的,但也不是非常困难),或者您可以将它们下载到其他地方,就像您引用的页面所示。​​

更新:关于您在以下评论中的尝试:

  

我修复了我复制到/ usr / lib / pkgconfig的pc文件,这里是我的日志:pastebin.com/KZr8tMQ0我真的不明白。当我运行pkg-config时,它缺少gobject。当我以root身份运行它时,它缺少gdk。当我使用gtkmm-3.0运行它时会生成参数...当我用gtkmm-2.4运行它时崩溃即使gtkmm-2.4实际上是我在PKG_CONFIG_PATH中设置的文件夹中唯一的gtkmm pc文件。

  • Windows没有gtk-3.0或gtkmm-3.0。所以毫不奇怪,它说:在pkg-config搜索路径中找不到包gtkmm-3.0 。使用pkg-config gtkmm-2.4
  • 你有gtkmm-2.4&amp; 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目录。