libmemcached问题

libmemcached问题,c,linux,libmemcache,C,Linux,Libmemcache,当我在ubuntu上运行libmemcached示例代码时,它给了我一个错误“未定义对'memcached_create'的引用”,有人能帮忙吗?谢谢 #include <libmemcached/memcached.h> int main(int argc, char **argv) { //memcached_servers_parse (char *server_strings); memcached_server_st *servers = NULL; m

当我在ubuntu上运行libmemcached示例代码时,它给了我一个错误“未定义对'memcached_create'的引用”,有人能帮忙吗?谢谢

#include <libmemcached/memcached.h>

int main(int argc, char **argv) {  
  //memcached_servers_parse (char *server_strings); 
  memcached_server_st *servers = NULL;
  memcached_st *memc;
  memcached_return rc;
  char *key= "keystring";
  char *value= "keyvalue";

  memc= memcached_create(NULL);
  servers= memcached_server_list_append(servers, "localhost", 11211, &rc);   rc= memcached_server_push(memc, servers);

  if (rc == MEMCACHED_SUCCESS)
    fprintf(stderr,"Added server successfully\n");   else
    fprintf(stderr,"Couldn't add server: %s\n",memcached_strerror(memc, rc));

  rc= memcached_set(memc, key, strlen(key), value, strlen(value), (time_t)0, (uint32_t)0);

  if (rc == MEMCACHED_SUCCESS)
    fprintf(stderr,"Key stored successfully\n");   else
    fprintf(stderr,"Couldn't store key: %s\n",memcached_strerror(memc, rc));

  return 0;

}
#包括
intmain(intargc,字符**argv){
//memcached_servers_parse(字符*服务器字符串);
memcached_server_st*servers=NULL;
memcached_st*memc;
memu返回rc;
char*key=“keystring”;
char*value=“keyvalue”;
memc=memcached_create(NULL);
servers=memcached\u server\u list\u append(服务器,“本地主机”,11211,&rc);rc=memcached\u server\u push(memc,服务器);
if(rc==MEMCACHED\u SUCCESS)
fprintf(stderr,“已成功添加服务器\n”);else
fprintf(stderr,“无法添加服务器:%s\n”,memcached_strerror(memc,rc));
rc=memcached_集(memc,key,strlen(key),value,strlen(value),(time_t)0,(uint32_t)0);
if(rc==MEMCACHED\u SUCCESS)
fprintf(标准,“密钥成功存储\n”);其他
fprintf(stderr,“无法存储密钥:%s\n”,memcached_strerror(memc,rc));
返回0;
}

-lmemcached
传递给GCC。这告诉它链接到
libmemcached.so
共享库。

-lmemcached
传递到GCC。这告诉它链接到
libmemcached.so
共享库。

当我构建库(libmemcached)时,它只构建静态库,当我链接我的程序(上面提到的)时,它给我

$ gcc MyMemClient.c  -o MyMemClient -L/usr/local/lib/libmemcached.a
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0x1f): undefined reference to `_memcached_create'
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0x58): undefined reference to `_memcached_server_list_append'
//ccQEXVjv.o:MyMemClient.c:(text+0x6d): undefined reference to `_memcached_server_push'
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0xc1): undefined reference to `_memcached_strerror'
/tmpccQEXVjv.o:MyMemClient.c:(.text+0x12a): undefined reference to `_memcached_set'
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0x170): undefined reference to `_memcached_strerror'
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0x199): undefined reference to `_memcached_server_free'
//ccQEXVjv.o:MyMemClient.c:(.text+0x1a4): undefined reference to `_memcached_free'
ld returned 1 exit status
当我构建库(libmemcached)时,它只构建静态库,当我链接我的程序(如上所述)时,它给我

$ gcc MyMemClient.c  -o MyMemClient -L/usr/local/lib/libmemcached.a
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0x1f): undefined reference to `_memcached_create'
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0x58): undefined reference to `_memcached_server_list_append'
//ccQEXVjv.o:MyMemClient.c:(text+0x6d): undefined reference to `_memcached_server_push'
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0xc1): undefined reference to `_memcached_strerror'
/tmpccQEXVjv.o:MyMemClient.c:(.text+0x12a): undefined reference to `_memcached_set'
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0x170): undefined reference to `_memcached_strerror'
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0x199): undefined reference to `_memcached_server_free'
//ccQEXVjv.o:MyMemClient.c:(.text+0x1a4): undefined reference to `_memcached_free'
ld returned 1 exit status
  • 打开终端并将目录更改为未压缩的libmemcached
  • 键入
    /configure
  • 键入
    make
  • 在C项目中,右键单击并选择“属性”。在“链接器”中添加“libmemcached.so”库,并记住添加库目录(指向目录的链接包含libmemcached.so)
  • 打开终端并将目录更改为未压缩的libmemcached
  • 键入
    /configure
  • 键入
    make
  • 在C项目中,右键单击并选择“属性”。在“链接器”中添加“libmemcached.so”库,并记住添加库目录(指向目录的链接包含libmemcached.so)
    当我运行gcc3gbbn.c-lmemcached时,它可以工作。也就是说,我的源代码问题是:代码找到了头文件,但是头文件找不到file@sharp,是的,头文件仅为编译器提供原型。它没有告诉链接器函数的实现在哪里。我有同样的问题,也添加了-lmemcached,但它仍然显示相同的结果error@PHPConnect,您可能没有安装实际的库。你运行的是什么操作系统和版本?我有ubuntu系统,我已经在“/opt/memcached”中安装了前缀为libmemcached的libmemcached。当我运行gcc3gbn.c-lmemcached时,它可以工作。也就是说,我的源代码问题是:代码找到了头文件,但是头文件找不到file@sharp,是的,头文件仅为编译器提供原型。它没有告诉链接器函数的实现在哪里。我有同样的问题,也添加了-lmemcached,但它仍然显示相同的结果error@PHPConnect,您可能没有安装实际的库。您运行的是什么操作系统和版本?我有ubuntu系统,并且安装了前缀为“/opt/memcached”的libmemcached