博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下静态编译glib
阅读量:4952 次
发布时间:2019-06-11

本文共 1641 字,大约阅读时间需要 5 分钟。

  glib是gtk下的一个库,也是开发中常用的一个工具库。glib提供的基本的数据结构和算法(只说我现在用到的),例如更有效的内存管理、配置文件处理、异步队列、哈希表、字符串处理、编码转换等。它就像野外生存的瑞士军刀,一个日常开发过程中不可多得的利刃。当然完全抛弃,独立实现也可以,我之前就是这样做的,各有好处。

  但是,在服务器操作系统中并不总自带有glib库,总要经常安装,因此如果能编译成静态库连接到程序,这样最好。经过一番努力,我已经成功,现把简要过程写在下面,随意分享。

1.下载、编译、安装

wget http://ftp.gnome.org/pub/gnome/sources/glib/2.22/glib-2.22.5.tar.gz

tar zxvf glib-2.22.5.tar.gz

cd glib-2.22.5

./configure --prefix=/usr/local/glib --enable-static --disable-shared CFLAGS="-static"

make && make install

说明:

--prefix指定安装到目录,不要与系统中已安装的glib混淆。

--enable-static --disable-shared CFLAGS="-static"使得编译出静态库.a文件。

 

重点

export PKG_CONFIG_PATH=/usr/local/glib/lib/pkgconfig:$PKG_CONFIG_PATH

pkg-config --libs glib-2.0 gthread-2.0

pkg-config --cflags glib-2.0 gthread-2.0

说明:

第一句使用是让pkg-config找到新编译的glib库及头文件,后两句是通过pkg-config分别获取头文件地址和库地址。

此外,也可将--prefix/lib/pkgconfig下的文件拷贝到/lib/pkgconfig下,让pkg-config自动搜索到,但会覆盖之前已安装在标准目录下的的glib的相关文件。

2.使用与测试

 编辑main.c

1 #include 
2 #include
3 4 void main() 5 { 6 g_thread_init(NULL); 7 puts("hello"); 8 printf("Glib version: %u.%u.%u\n\n", 9 glib_major_version,10 glib_minor_version,11 glib_micro_version);12 }

 

编辑test.sh:

#! /bin/bash

export PKG_CONFIG_PATH=/usr/local/glib/lib/pkgconfig:$PKG_CONFIG_PATH

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

 

执行

chmod +x test.sh

./test.sh

./glibtest

 

输出

hello

Glib version: 2.22.5

 

3.使用

在调用glib库函数之前需要调用g_thread_init(NULL)(涉及到线程操作时),但在glib-2.32以后则不需要此调用,可直接调用与线程相关的操作。

转载于:https://www.cnblogs.com/tiantao/archive/2012/04/23/2466942.html

你可能感兴趣的文章
bzoj 3192 删除物品
查看>>
【Foreign】Research Rover [DP]
查看>>
Daily Shell(3)
查看>>
微信之初学者:变量的终极奥义
查看>>
工作__问题
查看>>
选择题
查看>>
机器学习入门
查看>>
iPhone SDK开发基础之使用UITabBarController组织和管理UIView
查看>>
谈谈前端中的浮动,绝对定位,相对定位
查看>>
爬虫之初识爬虫
查看>>
1000.黑客和渗透测试学习
查看>>
CodeForces - 552E Vanya and Brackets —— 加与乘运算的组合
查看>>
【PAT】B1059 C语言竞赛(20 分)
查看>>
Cassandra1.2文档学习(1)——Cassandra基本说明
查看>>
015---Django的forms组件
查看>>
静态作用域和动态作用域
查看>>
plsql查询乱码问题解决
查看>>
ORACLE服务端详细安装步骤(配图解)
查看>>
软件测试类型之其他类型
查看>>
如何解决数据类别不平衡问题(Data with Imbalanced Class)
查看>>