编译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. oracle函数 TRANSLATE(c1,c2,c3)

    [功能]将字符表达式值中,指定字符替换为新字符 [说明]多字节符(汉字.全角符等),按1个字符计算 [参数] c1   希望被替换的字符或变量 c2   查询原始的字符集 c3   替换新的字符集,将 ...

  2. part10.2-字符设备驱动模型

  3. 操作SDO_GEOMETRY字段

    读取SDO_GEOMETRY字段 select  to_char(regexp_replace(sdo_util.to_gmlgeometry(t.intsxn_geom),'</?[^> ...

  4. WPF Converter(转)

    WPF Binding 用于数据有效性校验的关卡是它的 ValidationRules 属性,用于数据类型转换的关卡是它的 Converter 属性.下面是实例: 1. Binding 的数据校验 & ...

  5. SSM整合 mybatis多条件查询与分页

    多条件查询与分页: 通过页面的houseName.floorage获取值传到前端视图(HouseSearchVO)实体类中的houseName,floorage建立houseSearchVO对象. 通 ...

  6. Pytorch Bi-LSTM + CRF 代码详解

    久闻LSTM + CRF的效果强大,最近在看Pytorch官网文档的时候,看到了这段代码,前前后后查了很多资料,终于把代码弄懂了.我希望在后来人看这段代码的时候,直接就看我的博客就能完全弄懂这段代码. ...

  7. H3C 配置CHAP验证

  8. java接口的使用

    格式:public class SubImpl  extends Super  implements IA,IB 接口可以多继承,但是只能继承接口,不能继承类. 实现接口(支持多实现) [修饰符] c ...

  9. [转]解决pip安装太慢的问题

    阅读目录 临时使用: 经常在使用Python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以我们最好是将自己使用的pip源更换一下,这样就能解 ...

  10. 【codeforces 761A】Dasha and Stairs

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...