glib2的API change的太频繁了!

我有点明白为什么没人给Linux写桌面程序了。太可怕了。不仅二进制发布困难,连源代码发布都很困难。

我用glib 2.34的API在我自己的电脑(MAC)上写了一个程序,换到CentOS6下编译,根本过不去。因为CentOS6用的glib2是2.22,大约是2009年9月发布的,也就是说3年前。

这三年的变化有多恐怖呢?就说我遇到的吧。

首先,mutex是每个多线程程序必定会用到的东西。在2.22上它是一个透明的指针

typedef struct _GMutex GMutex; 用 g_mutex_new 分配一个新的,用 g_mutex_free释放。

在2.35上它是一个Union! 你得自己在heap或者stack上分配,然后取地址交给g_mutex_init 函数初始化。

条件变量什么的类似。

在2.22上,使用任何glib的函数前,必须先调用g_thread_init() 初始化(就像WSAStartUp)。在2.35上,这个函数不见了!因为不需要了!可是您留着它放着空实现有什么坏处呢?!嫌我写的#ifdef不够多吗?

现在官网上连2.22的文档干脆都不提供了,只提供到2.26,也就是说,2年前的版本。

最可恨的是,glib2和OS很紧密,不可能删掉它、替换它、升级它。去死吧!

此博客中的热门博文

在windows下使用llvm+clang

少写代码,多读别人写的代码

tensorflow distributed runtime初窥