编译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. Browse W3C's Open Source Software

    https://www.w3.org/Status.html Browse W3C's Open Source Software Amaya - a Web browser/editor First ...

  2. Datamation Index

    Datamation Index     Understand how to handle big data and improve organizational agility to support ...

  3. @noi.ac - 492@ casino

    目录 @description@ @solution@ @solution@ @part - 1@ @part - 2@ @part - 3@ @accepted code@ @details@ @d ...

  4. react项目安装及运行

    博客地址 :https://www.cnblogs.com/sandraryan/ 安装node ,有就跳过. node.js官网:https://nodejs.org/en/ 终端用node -v ...

  5. Codeforces Round #172 (Div. 1 + Div. 2)

    A. Word Capitalization 模拟. B. Nearest Fraction 枚举. C. Rectangle Puzzle 求出两个矩形的点,套简单多边形的面积交板子. D. Max ...

  6. Activiti7工作流+SpringBoot

    文章目录 一. Activiti相关概念 1. Activiti介绍 2. 核心类 2.1 ProcessEngine 2.2 服务(Service)类 2.2.1 TaskService 2.2.2 ...

  7. 在linux上安装pear

    在搭建centreon的过程中,需要pear模块支持. 什么是pear pear是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写. ...

  8. zoj 3652 Maze

    Maze Time Limit: 2 Seconds      Memory Limit: 65536 KB Celica is a brave person and believer of a Go ...

  9. 2018-8-3-WPF-读取硬件序列号

    title author date CreateTime categories WPF 读取硬件序列号 lindexi 2018-8-3 11:8:2 +0800 2018-8-2 19:28:6 + ...

  10. ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

    ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.You a ...