首页 > 解决方案 > 如何解决查找 pkg-config 时出现的 gcc 错误?

问题描述

这个问题似乎被问了无数次,但不幸的是,没有一个答案对我有帮助。

我相信我已经正确安装了 gtk。我的 pkg-config 环境似乎还可以。我不太确定gcc。我从路径环境中删除了所有 mingw 和 cygwin 文件夹,因为我只会使用 msys2 包。所以我有这样的路径环境: -

GTK_LIB_DIR C:\msys64\mingw64\lib

PKG_CONFIG_PATH C:\msys64\mingw64\lib\pkgconfig

路径 - C:\msys64\usr\bin;C:\msys64\mingw64\bin;%GTK_LIB_DIR%

我遇到的问题是编译。运行这个... gcc pkg-config --cflags gtk+-3.0-o gtkTest C:\dev\test_gtk3.cpkg-config --libs gtk+-3.0

我得到...

cc: error: `pkg-config: No such file or directory
gcc: error: gtk+-3.0`: No such file or directory
gcc: error: `pkg-config: No such file or directory
gcc: error: gtk+-3.0`: No such file or directory
gcc: error: unrecognized command line option '--cflags'
gcc: error: unrecognized command line option '--libs'

我可以单独运行以下命令,并获得预期的结果。例如

pkg-config --cflags gtk+-3.0
pkg-config --libs gtk+-3.0
gcc -o gtkTest C:\dev\test_gtk3.c

当然最后一个命令返回一个错误,因为 gtk 没有被引用。我尝试了各种组合,其中一些是我自己的。在 pkg-config 上推荐了一些,但仍然存在一个错误。例如 C:\WINDOWS\system32> gcc -o gtkTest C:\dev\test_gtk3.c "pkg-config --cflags gtk+-3.0 pkg-config --libs gtk+-3.0"

gcc: error: pkg-config --cflags gtk+-3.0 pkg-config --libs gtk+-3.0: No such file or directory

我找到的最后一个答案是“如果 pkg-config 报告它找不到包,那么您没有安装 Linux 发行版提供的 Gtk 开发包。”

我正在使用 Windows,但我认为我正确安装了 gtk,因为我按照说明进行操作,并且我得到了似乎是预期的结果(如果我弄错了,请纠正我)。

C:\WINDOWS\system32> pkg-config --cflags gtk+-3.0

-pthread -mms-bitfields -I/mingw64/include/gtk-3.0 -I/mingw64/include/cairo -I/m
ingw64/include -I/mingw64/include/pango-1.0 -I/mingw64/include/fribidi -I/mingw6
4/include -I/mingw64/include/atk-1.0 -I/mingw64/include/cairo -I/mingw64/include
/pixman-1 -I/mingw64/include -I/mingw64/include/freetype2 -I/mingw64/include -I/
mingw64/include/harfbuzz -I/mingw64/include -I/mingw64/include/libpng16 -I/mingw
64/include/gdk-pixbuf-2.0 -I/mingw64/include -I/mingw64/lib/libffi-3.2.1/include
 -I/mingw64/include/glib-2.0 -I/mingw64/lib/glib-2.0/include -I/mingw64/include

C:\WINDOWS\system32> pkg-config --libs gtk+-3.0

-L/mingw64/lib -L/mingw64/lib/../lib -L/mingw64/lib -lgtk-3 -lgdk-3 -lz -lgdi32
-limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lep
oxy -lopengl32 -lgdi32 -lpangocairo-1.0 -lm -lgdi32 -lpangoft2-1.0 -lm -lpangowi
n32-1.0 -lm -lusp10 -lgdi32 -lpango-1.0 -lm -lfribidi -lthai -ldatrie -latk-1.0
-lcairo-gobject -lcairo -lz -lpixman-1 -lm -pthread -lfontconfig -liconv -lexpat
 -lfreetype -lbz2 -lharfbuzz -lm -lusp10 -lgdi32 -lrpcrt4 -lgraphite2 -lpng16 -l
z -lgdk_pixbuf-2.0 -lm -lgio-2.0 -pthread -lintl -lshlwapi -ldnsapi -liphlpapi -
lws2_32 -lgmodule-2.0 -pthread -lintl -lz -lgobject-2.0 -pthread -lintl -lffi -l
glib-2.0 -lintl -lws2_32 -lole32 -lwinmm -lshlwapi -pthread -lm -lpcre

C:\WINDOWS\system32> gcc -o gtkTest C:\dev\test_gtk3.c | pkg-config --cflags --libs gtk+-3.0

-pthread -mms-bitfields -I/mingw64/include/gtk-3.0 -I/mingw64/include/cairo -I/m
ingw64/include -I/mingw64/include/pango-1.0 -I/mingw64/include/fribidi -I/mingw6
4/include -I/mingw64/include/atk-1.0 -I/mingw64/include/cairo -I/mingw64/include
/pixman-1 -I/mingw64/include -I/mingw64/include/freetype2 -I/mingw64/include -I/
mingw64/include/harfbuzz -I/mingw64/include -I/mingw64/include/libpng16 -I/mingw
64/include/gdk-pixbuf-2.0 -I/mingw64/include -I/mingw64/lib/libffi-3.2.1/include
 -I/mingw64/include/glib-2.0 -I/mingw64/lib/glib-2.0/include -I/mingw64/include
-L/mingw64/lib -L/mingw64/lib/../lib -L/mingw64/lib -lgtk-3 -lgdk-3 -lz -lgdi32
-limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lep
oxy -lopengl32 -lgdi32 -lpangocairo-1.0 -lm -lgdi32 -lpangoft2-1.0 -lm -lpangowi
n32-1.0 -lm -lusp10 -lgdi32 -lpango-1.0 -lm -lfribidi -lthai -ldatrie -latk-1.0
-lcairo-gobject -lcairo -lz -lpixman-1 -lm -pthread -lfontconfig -liconv -lexpat
 -lfreetype -lbz2 -lharfbuzz -lm -lusp10 -lgdi32 -lrpcrt4 -lgraphite2 -lpng16 -l
z -lgdk_pixbuf-2.0 -lm -lgio-2.0 -pthread -lintl -lshlwapi -ldnsapi -liphlpapi -
lws2_32 -lgmodule-2.0 -pthread -lintl -lz -lgobject-2.0 -pthread -lintl -lffi -l
glib-2.0 -lintl -lws2_32 -lole32 -lwinmm -lshlwapi -pthread -lm -lpcre
C:\dev\test_gtk3.c:1:10: fatal error: gtk/gtk.h: No such file or directory
    1 | #include <gtk/gtk.h>
      |          ^~~~~~~~~~~
compilation terminated.

这里有没有人像我一样为此苦苦挣扎了几个小时,终于明白了问题所在。请分享您的解决方案。谢谢你。

标签: cgccgtk3msys2pkg-config

解决方案


在 windows 下使用这个安装 gtk 和使用 gcc 编译?帮助我克服了错误。我使用了以下建议。

“您可能会发现创建用户环境变量并将标志存储在其中更方便,而不是批处理文件,这样您就可以在正常的命令提示符下进行编译。”

因此,我创建了两个新的环境变量(例如 GTK_FLAGS_VARS;GTK_LIBS_VARS),并将输出粘贴到变量值中。然后在路径位置 %GTK_FLAGS_VARS%;%GTK_LIBS_VARS% 之后 gcc -o gtkTest C:\dev\test_gtk3.c %GTK_FLAGS_VARS% %GTK_LIBS_VARS%


推荐阅读