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

2023-11-23

我搜索了又搜索,但没有得到我真正想要的信息。有人可以尽可能完整地、从根本上解释一下在 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 应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Linux 上使用 GCC 编译 C 和 Gtk+? 的相关文章

随机推荐

  • 超时重新连接MySQL

    我有一个 Python 程序 它在后台运行数周 并且每隔一段时间就会进行数据库查询 为此 我使用 ORMpeewee 版本 2 2 1 我在用MySQL作为后端 最近 我在访问数据库时经常遇到问题 通常是在运行程序几天后 引发的错误peew
  • 自动回显 IPython 中赋值语句的结果 [重复]

    这个问题在这里已经有答案了 有没有办法让 IPython 自动回显赋值语句的结果 例如 在MATLAB 结束不带分号的赋值语句会打印赋值结果 而在语句末尾放置分号会抑制任何输出 gt gt b 1 2 b 3 gt gt b 1 2 gt
  • 在 Python 中口头格式化数字

    pythonistas 如何将数字打印为单词 就像 Common Lisp 代码的等价物 3 gt format t r 1e25 nine septillion nine hundred and ninety nine sextillio
  • Hadoop Yarn:如何使用 Spark 限制资源的动态自分配?

    在我们在 Yarn 下运行的 Hadoop 集群中 我们遇到了一个问题 一些 聪明 的人能够通过在 pySpark Jupyter 笔记本中配置 Spark 作业来消耗更大的资源块 例如 conf SparkConf setAppName
  • 为什么 TypedReference 是在幕后?它是如此快速和安全......几乎是神奇的!

    警告 这个问题有点异端 宗教程序员总是遵守良好的实践 请不要阅读它 有谁知道为什么使用类型化参考如此沮丧 隐含地 由于缺乏文档 我发现它有很大的用途 例如当通过不应该是泛型的函数传递泛型参数时 当使用object如果您需要值类型 则可能会过
  • 将 LINQ-to-SQL 谓词组合成单个谓词

    之前的一个问题 递归地 将 LINQ 谓词组合成单个谓词 与此类似 但我实际上问了错误的问题 那里的解决方案满足了所提出的问题 但实际上并不是我需要的 但它们是不同的 诚实的 给定以下搜索文本 keyword1 keyword2 keywo
  • 将行旋转为列 Firebird 2.5

    序列 table1 id Description 1 Proj x 2 Settlers 3 Bank 4 Newiest table2 id table1Id value alternate value 1 1 12 null 1 4 6
  • 从您的网站中删除 WWW 前缀

    当作为 URL 的一部分输入 www 前缀时 Stack Overflow 和其他网站 如何删除它 是重定向 重写还是其他什么 更新 我特别想知道 IIS 6 的上下文 在 Apache 上 它看起来像这样 在 htaccess 文件内 R
  • 在三星 Galaxy 设备上同时访问前置和后置摄像头

    我知道这个问题以前曾被问过 但已经过去很长时间了 再次问这个问题是为了收集任何新的技巧 想法 方法 我需要同时访问前置摄像头和后置摄像头 到目前为止 我已经尝试使用 android 相机 API 实现 双摄像头 Jens 设计 和camer
  • 高级比较和交换 (CAS) 功能?

    我想记录哪些高级 即 C 不是内联汇编器 函数或宏可用于比较和交换 CAS 原子原语 例如 x86 上的 WIN32 有一系列函数 InterlockedCompareExchange in the lt intrin h gt heade
  • Elastic Beanstalk 自定义 AMI 看不到环境变量

    由于一些大型软件包的要求 我正在为 Elastic Beanstalk 使用自定义 AMI 当我通过 SSH 访问 EC2 实例时 我的应用程序无法使用任何环境变量 在 Elastic Beanstalk Web 控制台设置中指定 我在生产
  • 获取异步方法主体中的当前任务实例

    如果我有一个像这样的异步方法体 public async Task GetSomething await SendText hi await SendImage bla bmp 当等待开始时 如何在将任务对象返回给用户之前获取任务对象 ie
  • React Fontawesome 没有 free-brands-svg-icons,因此无法显示社交媒体图标

    我可以在 React 网页上使用社交媒体图标吗 import library from fortawesome fontawesome svg core import FontAwesomeIcon from fortawesome rea
  • 悬停在另一个元素上时隐藏元素

    我知道可以在JavaScript 但是我正在寻找解决方案CSS 我有三个div div hide 默认应该是可见的 show 应该是隐藏的 当我将鼠标悬停在 main 上时 hide 应该隐藏 show 应该可见 div show 工作正常
  • 是否有浏览器支持输入元素的 form 属性?

    HTML5 规范允许与形式相关的元素参考他们的联系
  • Spring Boot应用程序启动后立即关闭

    我目前正在开发一个包含 Spring 框架的项目 一切都按方面进行 但有一个问题 当我尝试在笔记本电脑上启动应用程序时 它在启动后立即关闭 它在其他所有机器上都可以工作 所以这个问题只发生在我的笔记本电脑上 也许您知道什么会导致这个问题 我
  • 如何重新安装已安装的 Eclipse 插件?

    如何将 Eclipse 插件从一个 Eclipse 安装 删除 或 复制 到另一个安装 例如 我安装了两个 eclipse 其中一个安装了一个插件 但我没有安装程序 也不容易在线获得 是否可以在我的其他版本的 eclipse 上安装此插件
  • 在浏览器中显示word/pdf/excel等文件。 (ASP.NET、C#.NET 2008)

    我有一个需要在浏览器中显示 Pdf Word 文档 任何版本 或 Excel 的要求 类似于GMAIL的功能 我怎样才能实现这个目标 我正在使用 Asp net 代码隐藏为 C 申请时间是2008年 Try 如何使用 ASP NET 和 V
  • 如何在使用相对 URL 时更改 http/https 协议

    协议相关 URLaren t我在寻找什么 我正在寻找一种绝对指定协议 http 与 https 同时保持 url 相对主机名的方法 给定一个相对 URL 例如 SearchForStuff 我希望能够指定不同的协议 https 与 http
  • 如何在 Linux 上使用 GCC 编译 C 和 Gtk+?

    我搜索了又搜索 但没有得到我真正想要的信息 有人可以尽可能完整地 从根本上解释一下在 Linux 上使用 GCC 用 C 语言编写时 Gtk 代码是如何编译的吗 有些东西像反引号 c99 和 o 文件我根本不理解 我也非常感谢任何学习 Gt