博文

目前显示的是 二月, 2013的博文

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很紧密,不可能删掉它、替换它、升级它。去死吧!

Start Using Mac OS X

春节托朋友在台湾买了一个mac mini, 莫效仿,价格和大陆差不多。MAC我用起来非常不习惯,常常有格了装Linux的冲动。但是…… 我现在连怎么进bios修改启动项都不会。下面说遇到的问题。eclipse:eclipse启动的时候会说"To open "Eclipse," you need a Java SE 6 runtime. Would you like to install one now?" 但是实际上我已经手动安装了JDK7,并且设置了JAVA_HOME环境变量。cmake && eclipse cdt:运行cmake之前要设置PATH环境变量,把eclipse命令包含在PATH路径中。否则cmake会说无法确定eclipse的版本号。生成的cdt project文件没有把编译器的include path包含进来,导致红叉遍地http://public.kitware.com/Bug/view.php?id=13823 这个问题据说已经fix了,但是不知道在哪个版本fix。emacs:系统自带的emacs是22.x。我用brew安装了新版本的emacs,但是没有UI。在terminal下使用emacs的时候,要修改terminal的keyboard设置,在"Use option as meta key"前面打勾。下载工具:没有离线下载,以BT种子方式发布的资源几乎都下载不下来。QQ旋风没有mac客户端。据说出了一个MAC版的QQ浏览器支持了,但是我试了下,没效果啊。QQ旋风的网页版号称也支持MAC,但是实际上也不行。链接点不开,让我换成IE内核或者Firefox浏览器。实际上我用的就是Firefox啊。迅雷在appstore中的版本不支持离线下载,但是官网上的新版本支持了。于是我去买了一个迅雷会员。离线资源不如QQ给力啊,总是找不到。QQ上离线下资源几乎都是秒下,而且QQ旋风还不要钱。update:重新装了emacs,有UI了,但是在SpotLight中搜不到它mkdir ~/Applicationsbrew linkapps只能搜到一个Emacs.base的App,打开就崩溃。直接在命令行下执行~/Applications/Emacs.app/Contents/MacOS…