libmemcache
- 作者:
- 最后编辑:2012年07月01日
- 标签: Memcache
libmemcache 是 memcached C的客户端之一。
libmemcache
libmemcache 是 memcached C的客户端之一。我准备使用这个玩意。 官网:http://people.freebsd.org/~seanc/libmemcache/ 下载:http://people.freebsd.org/~seanc/libmemcache/libmemcache-1.4.0.rc2.tar.bz2
编译:
1
2
3
./configure
make
make install
写一个有libmemcache函数的程序
然后
1
gcc a.c -o a.cgi -L/usr/local/include -lmemcache
运行
1
./a.cgi
提示类似上面的“error while loading shared libraries”的错误,查了一下可用”ldconfig”解决这个问题,那上面的可否用这个命令解决呢?
上面的gcc编译的时候,带有参数“-lmemcache”。 -l参数后面跟的库名有规则的,库的命名方式有libxxxx.so或libxxxx.a,编译时要用-lxxxx就可以了。 而“-l”的意思就是代表是个“lib”了。
所以在你自己编写动态库或者静态库时,命名还是得按照 libxxxx.so的形式来。
不得不认为libmemcache有点糟糕,编译它自带的一个程序编译竟然有问题,很无语!
1
2
3
4
5
6
7
8
[root@login benchmark]# gcc benchmark.c -L/usr/local/include -lmemcache
benchmark.c: In function `main':
benchmark.c:100: warning: passing arg 2 of `mc_set' discards qualifiers from pointer target type
benchmark.c:108: warning: passing arg 2 of `mc_set' discards qualifiers from pointer target type
benchmark.c:121: warning: passing arg 2 of `mc_req_add' discards qualifiers from pointer target type
benchmark.c:145: warning: passing arg 2 of `mc_delete' discards qualifiers from pointer target type
benchmark.c:153: warning: passing arg 2 of `mc_add' discards qualifiers from pointer target type
benchmark.c:167: warning: passing arg 2 of `mc_delete' discards qualifiers from pointer target type
解决方法:
找到passing arg 2这个参数的定义:
1
const char *key;
把const去了:
1
char *key;
这样就好了!
然后:
1
[root@login memcache-test]# ./a.out
执行时可能报以下的错误:
1
./a.out: error while loading shared libraries: libmemcache.so.0: cannot open shared object file: No such file or directory
解决方法:
1
执行ldconfig命令即可!
附:
http://kapoc.blogdriver.com/kapoc/1200549.html
ldconfig命令 - - 动态链接库管理命令
为了让动态链接库为系统所共享,还需运行动态链接库的管理命令–ldconfig.此执行程序存放在/sbin目录下.
ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib.so),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.
ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令.