如何在Linux上用GCC编译C和Gtk +?

我search和search,但我没有得到我真正想要的信息。 有人可以请尽可能完全和根本地解释在Linux上使用GCC编写C时如何编译Gtk +代码。 有一些像反引号,“c99”和.o文件,我根本不明白。

我也很感激任何学习Gtk +代码的资源。 我发现所有的来源是版本2.x,但我认为3.6是当前版本。

我想重申,我只对C代码感兴趣。 请不要尝试向我解释C ++或C#的好处,我已经阅读了所有这些。 我在这里为C.谢谢!

Solutions Collecting From Web of "如何在Linux上用GCC编译C和Gtk +?"

对于初学者,你写你的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。

我的Makefile

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

从Gtk Docs 入门页面:

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

另外检查Nikos C.的Aswer以了解更多关于pkg-config