Arch Gnome 3 下编译 Eva 未遂

上次写过一篇在ubuntu 10.10下编译eva,比较简单,因为那个时候源里是有eva的,况且我安装过,所以运行需要的环境是有了,然后就是build-dep这个好东西可以自动安装好编译所依赖的包,很遗憾,ubuntu 11.04源里不再有eva,至于arch,那就更没有了,AUR里有一个比较旧的版本,我没有尝试,而是直接去sourceforge下了比较新的源码。

首先是./autogen.sh生成configure脚本,然后就开始简单的./configure,当然,也是在这里走不动了。

事先知道装两个包,kdelibs和qt,然后发现说找不到kde-config,后来知道是因为现在这个包叫kde4-config了,于是ln -s建立一个软链接,过去了。

接着是Qt的问题,说是找不到lib和header,后来装了个qt-private-headers这个包,不起作用,然后网上搜一下,说qt库在/opt/qt/lib/,因为我是64位,我甚至还建立的一个叫lib64的软链接到lib,仍然无效,后来加了一个后缀,./configure –with-qt-dir=/opt/qt/,终于通过。

接着有来了个KDE的问题,我加了–prefix=`kde-config –prefix`,但是却不能找到KDE的库,我也学着上面建立了个kde的软链接到kde4,仍然无效,最后卡死在这:

checking for KDE… configure: error:
in the prefix, you’ve chosen, are no KDE libraries installed. This will fail.
So, check this please and use another prefix!

考虑的明天要早起去学校,也就没了耐心,就此作罢,但是我感觉隐约中学到了一些东西,有了新的体会,实际上编译就是把源码make成bin,但是源码太复杂,所依赖的lib也太复杂,各个distro上这些lib版本不一样,位置不一样,于是有了configure之类的东西,问题是这个程序是很多年前的,估计configure里面写的东西和现在不太符合了,实际上这个东西还是可以编译的,我觉得如果是对系统和变成了解很多的人甚至可以不用这个东西,一条一条敲命令编译好,当然没人会这样做。估计是可以根据自己的系统,改改confugure,把依赖的包位置都找准确,就能顺利编译。

Update:后来又做了尝试,原因应该是因为我的系统是64位的。

编译EVA小记

说起eva,感觉还是很亲切的,第一次用ubuntu的时候是8.04,那时候和姐两个人都是新手,暑假没事做,各自装上ubuntu,然后折腾,交流,那时候显然不知道irc、gtalk之类的高端的东西,所以还是用qq,那个时候用的最多的客户端就是eva(好像也只有这个比较好用一些)。如此,对eva的感情当然很深厚。

后来一直到10.04的时候还是执着用着eva,但是某一天没事做去win下把qq的好有分组改了一通,后来发现eva再也上不去了。登录是成功的,但是登录成功那一霎那就崩溃了。因为学习很紧张,也就再也没去试过,后来改用gtalk,比较偏执地用了很久(现在也在继续),也鼓动了一些同学在用。但是寒假联系一些同学的时候发现还是需要上一下qq什么的,webqq在我这铁通就很杯具了,pidgin什么的,登录qq也很杯具,于是没办法,开始重新捣鼓eva,嗯,这就是序言,太长了……

好了下面进入正题。

1、首先下载源代码

svn co https://evaq.svn.sourceforge.net/svnroot/evaq evaq

2、然后进入到编译的目录

cd evaq/trunk/eva/

3、没有configure脚本,这一步貌似是生成的吧(IRC上高手告诉我的)

make -f admin/Makefile.common

4、对了,依赖还没解决呢,因为eva源里有,所以可以这样一下子就安装所有依赖包

sudo apt-get build-dep eva

5、然后就可以configure啦,修改一下prefix,因为依赖一个libart的包,源里的版本貌似用不上,也就算了,用–without-arts忽略之

./configure –prefix=/usr –without-arts

6、不着急make,这里有个问题,在./src/libeva/这个目录里有个evamemo.cpp文件有问题。打开之,第144行,那个itoa函数,据说不是标准库里面的,所以make的时候会出错,因为不会C,所以请IRC上的高手帮忙用sprintf函数改写了一下。也就是将

itoa(EvaUtil::read32(decryptedBuf+pos),qqid,10);

这一句删掉,改成:

sprintf(qqid, “%d”, EvaUtil::read32(decryptedBuf+pos));

然后保存之,就可以编译了(如果CPU是双核就加上-j2参数,否则就直接make)

make -j2

7、然后安装(需要事先卸载掉源里安装的eva)

sudo make install

(但是这一步我一开始运行出错了,后来我运行了make installcheck之后才管用)

大功告成!可以运行eva了,在程序菜单里就可以发现启动项。