【发布时间】:2014-06-22 11:47:19
【问题描述】:
我正在尝试使用教程here 编译一个gtk 程序。当我发出命令时
gcc -o tut tut.c $(pkg-config --cflags --libs gtk+-2.0 gmodule-2.0)
我收到以下错误:
gcc: error: unrecognized command line option ‘-pthread -I/usr/include/gtk-2.0
-I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0
-I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0
-I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/glib-2.0
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1
-I/usr/include/libpng12 -I/usr/include/harfbuzz -Wl,--export-dynamic -pthread
-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0
-lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lfreetype
-lgmodule-2.0 -lglib-2.0 ’
gcc 是 4.8.2 版本。 pkg-config 是 0.26 版。我已经安装了 libgtk2.0-dev。
我可以很好地编译简单的c程序。
如何解决“无法识别的命令”问题?
[评论更新]
我正在使用zsh。
【问题讨论】:
-
我从 pkg-config --cflags --libs gtk+-2.0 gmodule-2.0 的输出中删除了“-pthread”,并将该命令的输出粘贴到 gcc 命令和编译顺利进行。
-
如果我给我的 gcc 提供了无效的选项,每个无法识别的命令行选项都会在单独的错误消息中给出。这似乎是一个论点。您是否使用
"$(...)"而不仅仅是$(...)或类似的东西? -
@mafso,我只使用 $(...),没有引号。
-
但是,这似乎是 gcc 的一个论点……您可以像删除“pthread”(如您的评论中所述)但不删除它时那样做吗?
-
有趣…The Debian
zshman page 说 “如果替换没有用双引号括起来,则使用 IFS 参数将输出分解为单词。” 在“命令替换”下。无论如何,很好,你找到了解决方案。
标签: c gcc gtk zsh pkg-config