memcached 0.3版本
弄了差不多两个小时终于让未曾见天日的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.hcxx_except.hdb_cxx.hdb.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
如果一闓始就意味着结束,那我依然和你走下去。 ■■※”『*.谢谢伱来过、狠遗憾伱还是赱了.!!』 曾经的相濡以沫,现在的行同陌路。 ■■※”『*.我想大声的告诉你。你一直都在我的心里.!!』 我是心甘情愿的,所以没有为什么,只有自己知道那是骗人的 我会好好的活。活出个样子。要你们所说的话付出代价。
页:
[1]