ubuntu下成功安装sfslite

C/C++, Linux Add comments

之前曾采用MIT的开源chord来开发P2P的系统,由于chord依赖于sfslite的一些库文件,所以需要安装sfslite-0.8.16。自此带来了很多问题,因为sfslite需要gcc-4.1.2才能编译,用最新的gcc-4.3或4.4都会编译失败,而且它好像还和操作系统有关,在fedora 7下可以正常编译。如果您不想使用fedora 7这种老版本的系统那就麻烦了。

最近新安装了ubuntu 10,突然想在ubuntu下尝试一下,这样后续的开发就不用再装fedora 7的虚拟机了,而且也可以方便程序的移植。下面简要介绍安装的过程:

首先安装gcc-4.1.2,具体安装过程参考“在ubuntu中编译、安装gcc 4.1.1过程以及遇到的问题”,上面讲的很详细。主要有一个地方需要注意,gcc-4.1.2依赖texinfo库,默然configure不支持texinfo 4.10+,需要修改configure文件。在其中找到’texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])’编辑成’texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|4\.[1-9][0-9]*|[5-9])’后保存,编译通过。[注] 无需修改LD_LIBRARY_PATH变量,在ubuntu下没有这个变量,因为已经被废除了,直接安装好后就可以使用了。

[tips]可以使用ubuntu中自带的 update-alternatives 命令来方便的进行多个gcc版本之间的切换(具体命令使用可以在google上搜)。

接下来就是使用gcc 4.1.2来编译sfslite,首先下载sfslite-0.8.16的tar包。(不要使用sfslite-0.8.17,编译会出错)

然后解压,进入源文件根目录,输入 ./configure –with-sfsmisc (with前是两个-) 只要这一个选项就可以了,不用输–with-dmalloc

接下来如果直接make的话会出错,会提示 unknown sizeof  ucred 。在网上找了很久,终于发现只有在编译时加上-D_GNU_SOURCE才可以。在gcc编译选项中增加 -D_GNU_SOURCE,这需要改makefile文件。具体为async和arpc目录下的Makefile文件中找到“ECFLAGS =” 改为:“ECFLAGS = -D_GNU_SOURCE”

然后编译安装即可。

Leave a Reply

Leave what you want to say:

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :cry: :arrow: :?: :-| :-x :-o :-P :-? :) :( 8)

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS 登录