我search和search,但我没有得到我真正想要的信息。 有人可以请尽可能完全和根本地解释在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。
我的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
。