[英]Why won't g++ compile a simple GTK program?
这些天我开始教自己一些C ++,我决定在此期间学习一些GUI编程。 事实是,它只是不会编译,使用GTK(Windows捆绑3.6.4)或wxWidgets(3.0.0)。 我得到的错误与两者相似,所以我坚持使用GTK +来解决这个问题。
5天后(7次重新编译wx,很多教程,SO问题和谷歌),这就是我试图编译代码的方式 (我是在Windows 7,64位下,而不是选择切换到Linux吧现在):
@echo off
set cygpath=C:\Cygwin\bin
set filename=simple
%cygpath%\bash.exe -c "gcc $(pkg-config --cflags gtk+-3.0) -o %filename% %filename%.c $(pkg-config --libs gtk+-3.0)"
echo.
pause
但我得到的唯一输出是(backtilts而不是$()
返回相同的东西):
: Invalid argument
: Invalid argument
我一开始尝试了没有Cygwin,但结果如下:
gcc: 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'
使用引号或双引号根本没有帮助。 我在cygwin-bash或Windwos提示符下尝试了所有这些
我完全不熟悉C ++,wxWidgets和GTK +,我已经看到了这个 ,但由于它没有解决我的问题而我因为声誉而无法评论,我认为我不得不打开一个新问题。
此外,我将编译器更改为TDM-GCC,因为我无法使用MinGW编译wx。 这有点相关吗? 我在这里错过了什么?
在此先感谢您的帮助。
编辑 :对不起,刚才意识到样本是用C语言编写的,而不是用C ++编写的。 我现在正在添加标签。 (但是,错误与我用于wx的C ++代码相同,所以我保留了C ++标记。)
这不是gcc问题。 这是脚本/ shell / bash /环境问题。
gcc: error: $(pkg-config: No such file or directory
这一行表示'gcc'看到了$(pkg-config
,它期待一个文件名; Linux应用程序期望命令行替换是由shell调用它们完成的。
这意味着shell没有消耗$(pkg-config --cflags gtk+-3.0)
并对其执行替换。
您可能想尝试制作一个bash脚本gtkcc.sh,它会为您执行此操作并在相应位置插入相关参数。
#!/bin/bash
# usage: gtkcc.sh <filename>
filename="$1"; shift
if [ -z "${filename}" ]; then echo "Usage: $0 <filename>"; exit 255; fi
if [ ! -f "${filename}.c" ]; then echo "Cannot find ${filename}.c"; exit 255; fi
gtkCFLAGS="$(pkg-config --cflags gtk+-3.0)"
gtkLDFLAGS="$(pkg-config --libs gtk+-3.0)"
cmd="gcc ${gtkCFLAGS} -o \"${filename}\" \"${filename}.c\" ${gtkLDFLAGS}"
echo $cmd >${TMP}/gtkcc.log
eval $cmd
保存为gtkcc.sh或gtkcc, chmod a+rx gtkcc.sh
更改您的bat文件以调用:
%cygpath%\bash.exe gtkcc.sh %filename%
如果它不起作用,启动bash并咨询$ {TMP} /gtkcc.log,否则你可以注释掉回声线。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.