繁体   English   中英

为什么g ++不能编译简单的GTK程序?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM