1 安装glib库所需要的依赖库:
libffi-3.0..tar.gz
glib-2.40..tar.xz
安装依赖库libffi:
tar xf libffi-3.0..tar.gz
cd libffi-3.0.
./configure
make
make install
配置环境变量:
vim /etc/profile
添加下面的内容:
export LIBFFI_CFLAGS=-I/usr/local/lib/libffi-3.0./include
export LIBFFI_LIBS=/usr/local/lib/libffi.la
export C_INCLUDE_PATH=/usr/local/lib/libffi-3.0./include/
 
使配置文件立即生效
source /etc/profile
 
安装glib库:
configure 配置选项
--enable-debug=no 选项:默认是mini模式,在release的时候应该使用该选项
--disable-included-printf 选项:这个选项要谨慎使用,可能会造成某些 printf 家族的函数不能使用 tar xf glib-2.40..tar.xz
cd glib-2.40.
./configure --enable-debug=no
make
make install
 
配置环境变量:
vim /etc/profile
添加下面的内容:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
 
使配置文件立即生效
source /etc/profile
 
 
2 使用 glib 库,测试字符串使用为例
vim test.c
 
#include <stdio.h>
#include <glib.h>
int main(int argc, char *argv[])
{
GString *teststr = NULL;
teststr = g_string_new("");
printf ("str is:%s\n", teststr->str);
printf ("len is:%d\n", teststr->len);
g_string_free (teststr, TRUE);
teststr = NULL;
g_return_val_if_fail (teststr, NULL);
return ;
}
gcc -I /usr/local/include/glib-2.0/ -I /usr/local/lib/glib-2.0/include/ -L/usr/local/lib -lglib-2.0
./a.out
 
这里运行可以发现断言会被打印,glib提供了关闭断言的开关
在使用glib库的程序中屏蔽断言需要在编译时加入开关
gcc -I /usr/local/include/glib-2.0/ -I /usr/local/lib/glib-2.0/include/ -DG_DISABLE_CAST_CHECKS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -lglib-2.0
运行程序后断言不打印
 
注意:使用glib库的时候最好是不要关闭断言,因为断言是预防程序 coredump 的最后屏障

glib-2.40编译安装的更多相关文章

  1. php5.6.40编译安装

    yum install gcc bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel libxml ...

  2. 编译安装lamp (php)

    用户账号及权限管理 用户账号:'user'@'host' user: 用户名 host: 此用户访问mysqld服务时允许通过哪些主机远程创建连接: host类型:IP.网络地址.主机名.通配符(%和 ...

  3. Centos7.5 源码编译安装PHP

    安装依赖 yum -y install epel-release yum -y install  gcc gcc-c++ make pcre pcre-devel zlib zlib-devel op ...

  4. 编译安装mysql-5.6.40

    编译安装mysql-5.6.40 环境说明 系统版本     CentOS 7.2 x86_64 软件版本     mysql-5.6.40 [root@db01 ~]# mkdir -p /serv ...

  5. 编译安装gimp插件之Mathmap(流水记录)

    本文为在Fedora 20下编译安装Mathmap1.3.5的编译过程,如果你仅仅需要快速的安装Mathmap,那么请拉至文末的"快速安装" 其实,过程还是很有趣的,充满Error ...

  6. 编译安装MariaDB-10.0.21

    一.源码编译安装gcc-5.1.0 1.下载gcc源码包 Download (HTTP): http://ftpmirror.gnu.org/gcc/gcc-5.2.0/gcc-5.2.0.tar.b ...

  7. 编译安装PHP7并安装Redis扩展Swoole扩展

    编译安装PHP7并安装Redis扩展Swoole扩展 在编译php7的机器上已经有编译安装过php5.3以上的版本,从而依赖库都有了 本php7是编译成fpm-php 使用的, 如果是apache那么 ...

  8. 转-httpd 2.4.4 + mysql-5.5.28 + php-5.4.13编译安装过程

    一.编译安装apache 1.解决依赖关系 httpd-2.4.4需要较新版本的apr和apr-util,因此需要事先对其进行升级.升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包.这 ...

  9. [转] 编译安装GCC

    Linux下编写C/C++程序自然缺不了一个优秀的编译器,Linux下比较常见的自然是GCC了. 2015年GCC也出到了5.2.0版本,对于C++11/14也有了更好的支持了. 所以,今天我们就来说 ...

随机推荐

  1. python 3 封装

    python 3 封装 从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小鱼,小虾,小王八,一起装进麻袋,然后把麻袋封上口子.照这种逻辑看,封装=‘隐藏’,这种理解是相当片面的. 先看如何隐藏 在 ...

  2. 【Flask】Sqlalchemy 增删该查操作

    ### sqlalchemy 增删改查操作, 通过session来进行操作. # coding:utf-8 # Author: liangjun. from sqlalchemy import cre ...

  3. scikit-learn笔记之初次接触

    一.加载数据: 然后看一下有多少个特征和类别以及它们的名字: 二.数据可视化:: 由于该套数据集有4个特征,所以只能选取2个特征进行显示. 可见红色和绿色的点混在一起,所以再选择其他特征作为坐标轴: ...

  4. 关于C++类的成员函数是否要加关键字“const”

    原则:类的成员函数在小括号后大括号前加上 const ,代表不准备改变对象的数据.不加的话代表有可能会改变对象的数据. 1.当常量对象,就是加上const修饰的类的成员去调用常量成员函数时,这表示:对 ...

  5. 理解javascript this 值

    如何确定this的值 this值会被传递给所有函数,this的值是基于运行时调用函数的上下文. 例如:从全局作用域调用sayFoo函数时,this引用window对象 当它作为myObject的一种方 ...

  6. request.post(2种格式)

  7. 利用simhash计算文本相似度

    摘自:http://www.programcreek.com/java-api-examples/index.php?source_dir=textmining-master/src/com/gta/ ...

  8. Git之Eclipse提交项目到Github并实现多人协作

    一.Eclipece提交项目到Github 见  eclipse提交项目到github 二.利用github组织实现多人协作 1.新建组织: New organization

  9. Javascript-- jQuery DOM篇(二)

    DOM拷贝clone() 克隆节点是DOM的常见操作,jQuery提供一个clone方法,专门用于处理dom的克隆 .clone()方法深度 复制所有匹配的元素集合,包括所有匹配元素.匹配元素的下级元 ...

  10. codeforces 632B B. Alice, Bob, Two Teams(暴力)

    B. Alice, Bob, Two Teams time limit per test 1.5 seconds memory limit per test 256 megabytes input s ...