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