簡體   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