编译GLib C程序

GLib是GTK +所需的实用程序库,但也可以在非GUI应用程序中独立使用。本文介绍如何在Linux中编译使用GLib的C程序。它还显示了如何为系统上安装的GLib版本安装正确的文档,以及如何查找当前安装的GLib库的版本号。

本文使用的命令和库已在Linux Mint 18上进行了测试,但应在所有基于Debian的Linux发行版(包括Ubuntu)上运行。在编译程序之前,请确保已在系统上安装了GLib开发库:

sudo apt-get install libglib2.-dev

编译一个简单的GLib C程序

下面的示例程序是一个使用GLib函数编写的简单的“ Hello World” C程序。代码清单下方显示了有关在Linux中编译程序的说明。

#include <glib.h>

int main(void)
{
g_print("Hello, world!\n");
return ;
}

在命令行中使用以下命令来编译上述程序:

gcc main.c `pkg-config --cflags --libs glib-2.0` -o hello

在上面的行中,使用反引号(`)而不是单引号(')将pkg-config及其选项括起来。或使用:

gcc main.c $(pkg-config --cflags --libs glib-2.0) -o hello

可以从命令行如下运行名为hello的已编译程序:

./hello

安装GLib帮助

安装系统上安装的GLib版本的GLib帮助文档。

sudo apt-get install libglib2.-doc

可以在Devhelp中查看帮助文件。使用以下命令安装Devhelp:

sudo apt-get install devhelp

可以在Linux Mint 18 Mate菜单下的菜单→编程→Devhelp下找到Devhelp。下图显示了在Devhelp中打开的GLib参考手册。

查找GLib的版本号

单击Devhelp左窗格中的GLib参考手册,应显示文档的版本号,该版本号应与已安装的库的版本号相对应。还有两种其他方法可以确定库的已安装版本-使用pkg-config和按如下所述以编程方式进行确定。

使用pkg-config

在终端窗口中输入以下命令将显示当前安装的GLib版本。

pkg-config --modversion glib-2.0

以编程方式

编译并运行以下程序时,它将显示GLib的当前版本。

#include <glib.h>

int main(void)
{
g_print("glib version number is %d.%d.%d\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
g_print("GLIB_MAJOR_VERSION = %d\n", GLIB_MAJOR_VERSION);
g_print("GLIB_MINOR_VERSION = %d\n", GLIB_MINOR_VERSION);
g_print("GLIB_MICRO_VERSION = %d\n", GLIB_MICRO_VERSION);
return ;
}

编译使用:

gcc main.c`pkg-config --cflags --libs glib-2.0` -o版本

要么:

gcc main.c $(pkg-config --cflags --libs glib-2.0)-o版本

跑:

GLib C投币示例程序

另一个GLib C程序,用于模拟抛硬币。运行该程序时,它将“ Heads”或“ Tails”打印到终端窗口。抛硬币的正面或反面由g_random_boolean()函数确定。

#include <glib.h>

int main(void)
{
gboolean result; result = g_random_boolean();
if (result == TRUE) {
g_print("Heads\n");
}
else {
g_print("Tails\n");
}
return ;
}

Compile using:

gcc main.c `pkg-config --cflags --libs glib-2.0` -o coin_toss

Or:

gcc main.c $(pkg-config --cflags --libs glib-2.0) -o coin_toss

Run:

./coin_toss

编译GLib C程序的更多相关文章

  1. 使用VS+VisualGDB编译调试Linux程序

    Linux程序开发变得越来越多,越来越多的程序.产品需要跨平台,甚至有些开源项目只支持Linux平台,所以掌握Linux开发变得越来越重要. 但是对于习惯了Windows下的开发,使用了VS这个宇宙第 ...

  2. 如何编译ReactNative示例程序Examples

    通过示例程序可以看到一些基本组件的使用,对于学习ReactNative是很有帮助的. 编译示例程序需要将整个项目导入到androidStudio中,androidStudio导入项目时选择react- ...

  3. Ubuntu编译源码程序依赖查找方法

    ubuntu平时编译源码程序的时候会提示缺少相关的库或是头文件,可以按照以下两种方法进行查找,然后再安装相应的软件包. 1.使用apt-file查找头文件 安装apt-file sudo apt-ge ...

  4. VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序

    下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip, 不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0 ...

  5. 运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory

    运行编译后的程序报错  error while loading shared libraries: lib*.so: cannot open shared object file: No such f ...

  6. 减小Delphi XE5编译出来的程序体积

    默认Delphi XE, XE2, XE3,XE4,XE5, XE6 ... 编译出来的程序体积很大. 一般用两个方法可以很大程度上减少程序体积. 一.在工程中用编译指令禁用RTTI 禁用的方法很简单 ...

  7. linux终端下 编译c语言程序

    linux终端下,编译C语言程序步骤为: 采用vi进行源代码编写,编写完成后,:wq存盘退出,如: vi test.c 在命令行下,运行gcc编译程序,生成执行码,如: gcc  -o test te ...

  8. VS编译的QT程序发布时产生的AppCrash问题

    至少我碰到了三个情况,都是AppCrash错误(以下都指VS2008的Release的设置) 第1个错误,报错模块是程序自己 我使用VS2008 Team with SP1和QT4.86编译程序,一直 ...

  9. 【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”

    原文网址:http://www.cnblogs.com/Dageking/archive/2013/05/15/3079394.html VS2012编译出来的程序,在XP上运行,出现“.exe 不是 ...

随机推荐

  1. linux下重启oracle数据库

    如何在linux下重启oracle数据库 | 浏览:3930 | 更新:2013-09-18 19:33 1 2 3 4 5 6 分步阅读 在实际工作项目中,有时候会遇到需要对oracle数据库进行重 ...

  2. TensorFlow的 卷积层

    用 TensorFlow 做卷积 让我们用所学知识在 TensorFlow 里构建真的 CNNs.在下面的练习中,你需要设定卷积核滤波器(filters)的维度,weight,bias.这在很大程度上 ...

  3. [wikipedia] List of free and open-source software packages

    List of free and open-source software packages From Wikipedia, the free encyclopedia     This articl ...

  4. mysql查同个实例两个数据库中的表名差异

    select TABLE_NAME from ( select TABLE_NAME ,) as cnt from information_schema.tables where TABLE_SCHE ...

  5. oracle函数 round(x[,y])

    [功能]返回四舍五入后的值 [参数]x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则四舍五入为y位小数,如果y小于0则四舍五入到小数点向左第y位. [返回]数字 [示例] se ...

  6. TP-admin即基于ThinkPHP5拿来即用高性能后台管理系统

    TP-Admin即基于ThinkPHP5的web后台管理系统(总结一套自己的后台管理系统,方便自己后续的项目开发.) 主要特性:自适应手机端.支持国际化.吸取其他CMF框架优点.多站点部署.日志记录. ...

  7. adblock自定义规则

    click.admaster.cn/* cm.baidu.com/* cm.pos.baidu.com/* cpro.baidu.com/* cpro.baidustatic.com/* dup.ba ...

  8. JS iFrame 加载慢怎么解决

    在项目中经常要动态添加iframe,然后再对添加的iframe进行相关操作,有时候会遇到iframe加载很慢什么原因呢,该如何解决呢?带着这个问题一起通过本文学习,寻找答案吧! aaa.html &l ...

  9. 【DCN】Wireless Intranet Captive Portal

    Wireless Intranet Captive Portal 配置AAA服务Radius认证 radius-server key 0 radius radius-server authentica ...

  10. <STL源码剖析> 6.3.6 power

    计算power的算法说明 http://www.sxt.cn/u/324/blog/2112 翻译自  http://videlalvaro.github.io/2014/03/the-power-a ...