首先,我必须说我是linux新手。 我使用ubuntu并尝试编译一些c代码。 我学习了gtk并用gcc编译了一些程序,但是我想把它用于windows。 这就是为什么我在一个捆绑包中下载了gtk for windows并将include和lib文件夹放入/ usr / i686-w64-mingw32。 但是当我尝试使用mingw编译我的源代码时,它说没有找到gtk / gtk.h。 我该怎么办?
谢谢大家。
答案 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为您提供了本机编译的答案,并且您希望进行交叉编译。