簡體   English   中英

如何在Linux上用GCC編譯C和Gtk +?

[英]How to compile C and Gtk+ with GCC on Linux?

我搜索和搜索但我沒有得到我真正想要的信息。 有人可以盡可能完整地從根本上解釋在Linux上使用GCC在C語言中編寫Gtk +代碼的過程。 有些東西,比如反引號,“c99”和.o文件,我根本就不懂。

我也很感激學習Gtk +代碼的任何資源。 我發現的所有資源都是版本2.x,但我認為3.6是當前版本。

我想重申一下,我只對C代碼感興趣。 請不要嘗試向我解釋C ++或C#的好處,我已經閱讀了所有這些內容。 我來這里是為了C.謝謝!

對於初學者,你編寫你的C代碼,比如“hello_world_gtk.c”,然后使用適當的編譯器和鏈接器標志編譯並鏈接它與Gtk。 這些標志由pkg-config工具提供給您。 要獲取所需的編譯器標志,請使用以下命令調用該工具:

pkg-config gtk+-2.0 --cflags

對於鏈接標志:

pkg-config gtk+-2.0 --libs

反引號允許您從pkg-config獲取輸出並將其作為參數傳遞給gcc:

gcc `pkg-config gtk+-2.0 --cflags` hello_world_gtk.c -o hello_world_gtk `pkg-config gtk+-2.0 --libs`

但是你不需要使用反引號。 如果需要,您可以手動復制和粘貼標志。

對於Gtk 3,將“2.0”替換為“3.0”。 如果pkg-config報告無法找到該軟件包,那么您沒有安裝Linux發行版提供的Gtk開發軟件包。

如果您通常不了解如何將某些內容編譯到目標文件中然后將其鏈接起來,那么您不應該從Gtk開始,而應該使用普通的C語言。 一旦熟悉了編譯和鏈接的絕對基礎知識,就可以繼續使用Gtk應用程序了。

正如其他人所說,你的問題過於寬泛。 它詢問反引號(基本shell語法),什么是“.o”文件(基本編程)和GTK編程(稍微高級編程)。

但要盡可能地回答它,並假設您只有一個源文件,請使用

gcc -Wall -Wextra -std=c99 `pkg-config --cflags --libs gtk+-2.0` example.c -o example

其中“example.c”是源的名稱。 這是細分:

  • 使用標志“-Wall”和“-Wextra”,以便您可以看到所有警告(並修復它們)。

  • 使用“std”標志設置C方言。 有幾個,gcc對大多數人有全部或部分支持。 閱讀手冊頁或信息頁面以獲取更多信息。 像上面這樣使用“c99”並不是一個糟糕的選擇。

  • 並使用pkg-config和命令替換(即反引號)來設置庫和包含。 請注意,您可以同時執行這兩項操作,但很多人會使用兩次重寫的pkg-config兩次。 反引號替換了滴答內命令的輸出。 嘗試在命令行中單獨在反引號中運行pkg-config,你會看到它的作用。

不幸的是,3.x GTK代碼的資源並不多,而且大多數資源仍然是基於2.x的。 您只需要使用gtk郵件列表或參考手冊。

對於GTK 3.x,您無法編譯的原因很可能是您的發行版基於GTK 2.x。 較新的發行版可能在其回購中有GTK 3.x.

從Gtk文檔入門頁面:

gcc `pkg-config --cflags gtk+-3.0` -o example example.c `pkg-config --libs gtk+-3.0`

另請查看Nikos C.的Aswer以了解有關pkg-config更多信息。

我的Makefile

LDLIBS = -lcurl -lpthread `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`

通過gtk2.0示例:

$gcc test.c -o gnometest $(pkg-config --cflags --libs gtk+-2.0)

通過gtk3.0示例:

$gcc $(pkg-config --cflags gtk+-3.) test.c -o gnometest $(pkg-config --libs gtk+-3.0) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM