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

时间:2012-12-14 15:50:26

标签: gtk mingw ubuntu-12.04

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

谢谢大家。

2 个答案:

答案 0 :(得分:0)

pkg-config.exe所在的目录添加到PATH,或将PKG_CONFIG_DIR环境变量设置为该目录。

答案 1 :(得分:0)

我知道这个问题真的很古老,但是......

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

  

--sysroot=dir:使用dir作为标头和的逻辑根目录   库。例如,如果编译器通常会搜索   / usr / include中的头文件和/ usr / lib中的库,它将代替搜索   dir / usr / include和dir / usr / lib。 [[参考文献] [1]

执行此操作时,包含路径等都是相对于sysroot,在您的情况下" / usr / i686-w64-mingw32 /"。因为你把库放在" lib"和#34;中的头文件包括"除了用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 / include / gio-unix-2.0 / -I / usr / include / cairo -I / usr / include / pango-1.0 -I / usr / include / atk-1.0 -I / usr / include / cairo -I / usr / include / pixman-1 -I / usr / include / libpng12 -I / usr / include / gdk-pixbuf-2.0 -I / usr / include / libpng12 -I / usr / include / pango-1.0 -I / usr / include / harfbuzz -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描述的位置,则包含路径可能仍然会给您带来问题。问题是pkg-config为您提供了本机编译的答案,并且您希望进行交叉编译。