您的位置:首页 > 数据库 > Memcache

memcached 0.3版本

2013-12-05 23:47 218 查看
弄了差不多两个小时终于让未曾见天日的memcached 0.3的版本编译成功了,本来此此版本的程序只有两个头文件

但是编译却出了很多问题

首先没有 没有db头文件,google一下,发现原因是需要装berkeley db,然后省时间,就装了一个4.0版本的db,(后面就渐渐显露问题了)

然后就是因为版本太低了没有宏定义的 DB_ARCH_REMOVE ,google一下找到了,值为0X008

然后是DB_AUTO_COMMIT,这个google百度都找不到任何值得信息,想了一下,就到oracle上面搜了一下,只是找到这个宏名,,依然没有定义,

然后在oracle上面下载了一个高版本的4.7版本的db,然后解压缩,db文件夹找不到头文件db.h,然后搜索DB_AUTO_COMMIT,发现在build_vxworks,和build_wince,build_windows里面有这个值,为0x00000100

然后是在1253行处有一个问题就不是特别的明显了,意思是第三个函数和第四个函数的类型不匹配,可是我在google上面搜索了,oracle官方的没有问题,然后在http://www.uic.edu/depts/accc/systems/berkeley-db.doc/api_c/db_open.html看到的  int DB->open(DB *db, const char *file, const char *database, DBTYPE type, u_int32_t flags, int mode);与oracle http://docs.oracle.com/cd/E17076_02/html/api_reference/C/dbopen.html #include <db.h> int DB->open(DB *db, DB_TXN *txnid, const char *file, const char *database, DBTYPE type, u_int32_t flags, int mode);

第四个参数不一样,想了半天,终于知道了

我安装的db是早期的应该是uic的db,但是memcached调用的open却是oracle版本的,,所以只能修改一下,将memcached 里open函数第三个去掉,这样就可以运行了

然后 找不到event_set' 这个应该是libevent库没有链接,加上-levent 后面是线程没有链接 加上-lpthread,后面还有 db_env_create么有链接加上-ldb

实际上刚刚开始都找不到db.h 头文件

,自己将按照目录下面的/usr/local/BerkeleyDB.4.0/include 的四个头文件cxx_common.h cxx_except.h db_cxx.h db.h 复制到 /usr/local/include

将/usr/local/BerkeleyDB.4.0/lib 6个复制到 /usr/local/lib下面

编译执行

最后的问题是

./a.out: error while loading shared libraries: libdb-4.0.so: cannot open shared object file: No such file or directory
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: