我无法在ubuntu for windows上编译一些gtk c代码

我无法在ubuntu for windows上编译一些gtk c代码,gtk,mingw,ubuntu-12.04,Gtk,Mingw,Ubuntu 12.04,首先,我必须说,我是linux新手。 我使用ubuntu并试图编译一些c代码。 我学习了gtk并用gcc编译了一些程序,但我想让它适用于windows。 这就是为什么我在一个包中下载了gtk for windows,并将include和lib文件夹放入/usr/i686-w64-mingw32。 但是当我试图用mingw编译源代码时,它说找不到gtk/gtk.h。 我该怎么办 谢谢大家。或者将pkg config.exe所在的目录添加到路径中,或者将pkg\u config\u DIR环境变量设

首先,我必须说,我是linux新手。 我使用ubuntu并试图编译一些c代码。 我学习了gtk并用gcc编译了一些程序,但我想让它适用于windows。 这就是为什么我在一个包中下载了gtk for windows,并将include和lib文件夹放入/usr/i686-w64-mingw32。 但是当我试图用mingw编译源代码时,它说找不到gtk/gtk.h。 我该怎么办


谢谢大家。

或者将
pkg config.exe
所在的目录添加到
路径中,或者将
pkg\u config\u DIR
环境变量设置为该目录。

我知道这个问题很老,但是

交叉编译时,需要使用“-sysroot”参数指定sysroot

--sysroot=dir
:使用dir作为标头和 图书馆。例如,如果编译器通常会搜索 /usr/include中的头和/usr/lib中的库,它将改为搜索 dir/usr/include和dir/usr/lib。[[ref]][1]

执行此操作时,include路径等都是相对于sysroot获取的,在您的示例中为“/usr/i686-w64-mingw32/”。由于您将库放在“lib”中,将头文件放在“include”中,所以除了使用GTK编译可能需要的任何额外参数外,所有内容都应该正常工作

如果您查看“pkg config--cflags gtk+-2.0”的输出,那么它应该如下所示:

-pthread-I/usr/include/gtk-2.0-I/usr/lib/x86_64-linux-gnu/gtk-2.0/include-I/usr/gio-unix-2.0/-I/usr/include/cairo-I/usr/include/pango-1.0-I/usr/include/atk-1.0-I/usr/include/pixman/pixman-1-1-I/usr/include/libpng12-I/usr/include/gdk-pixbi-2.0-2.0-usr/include/lib/usr-2.0-1-1.0-inlude/usr/lib/f1-1.0-fb-1/fbr-1/fb-I/usr/include/pango-1.0-I/usr/include/glib-2.0-I/usr/lib/x86_64-linux-gnu/glib-2.0/include-I/usr/include/freetype2

如果您正在指定sysroot,但仍然收到报告的错误,则可能将头文件放在了错误的文件夹中。gtk.h的本机路径是“/usr/include/gtk-2.0/gtk/gtk.h”,因此要交叉编译来自mingw gtk包的版本,应将其复制到“/usr/i686-w64-mingw32/include/gtk-2.0/gtk/gtk.h”


最后请注意,pkg config为您提供“-I/usr/lib/x86_64-linux-gnu/gtk-2.0/include”。如果您正确地指定了sysroot,并将头文件放在pkg config所描述的位置,那么此include路径可能仍然会给您带来问题。问题是pkg config为您提供了本机编译的答案,您希望交叉编译。

您可以找到
gtk/*.h
文件的实际文件路径,并将其添加到gcc的默认库中,或者使用real
\include“headerfile.h”重新排列
\include
命令
styled string.when我将gtk/gtk.h更改为/usr/i686-w64-mingw32/include。。。另外,在pkg配置搜索路径中未找到实际路径和$i686-w64-mingw32-gcc main.c
pkg config gtk+-2.0--cflags
pkg config gtk+-2.0--libs
Package gtk+-2.0。在main.c:1:0:/usr/i686-w64-mingw32/include/gtk-2.0/gtk/gtk.h:32:21:致命错误:gdk/gdk.h:没有终止此类文件或目录编译。您能写下我应该如何编译代码吗。我应该在终端窗口中写入什么内容?我将/usr/i686-w64-mingw32/bin添加到路径变量中,并将/usr/i686-w64-mingw32/lib/pkgconfig添加到PKG_CONFIG_路径中。但是当我尝试用这个命令编译代码时:$i686-w64-mingw32-gcc
pkg配置--cflags gtk+-2.0
main.c-o pulsh.exe
pkg配置--libs gtk+-2.0
main.c:1:21:致命错误:gtk/gtk.h:没有终止这样的文件或目录编译。pkg配置--cflags--libs返回给您什么?