安装Redis报错:undefined reference to `

在VMware的Linux系统上安装Redis

具体过程如下:

下载,解压和编译:

$ wget
$ tar xzf redis-2.6.14.tar.gz
$ cd redis-2.6.14
$ make

在执行make的时候报错,具体报错信息如下:

zmalloc.o: In function `zmalloc_used_memory':
/usr/local/redis-2.6.14/src/zmalloc.c:223: undefined reference to `__sync_add_and_fetch_4'
collect2: ld returned 1 exit status
make[1]: *** [redis-server] Error 1
make[1]: Leaving directory `/usr/local/redis-2.6.14/src'
make: *** [all] Error 2

网上查了下资料,主要是因为我的linux是32位的,所以会报这个错,解决方案如下:

在make操作的时候加一个执行参数:make CFLAGS="-march=i686"

然后就不报错了。

附:启动并运行Redis

编译的可执行文件在src目录中,使用以下命令运行Redis:

[root@localhost redis-2.6.14]# src/redis-server

启动成功后控制台打印如下信息:

[2918] 03 Jul 09:05:01.011 # Warning: no config file specified, using the default config. In order to specify a config file use src/redis-server /path/to/redis.conf
[2918] 03 Jul 09:05:01.017 * Max number of open files set to 10032
[2918] 03 Jul 09:05:01.024 # Warning: 32 bit instance detected but no memory limit set. Setting 3 GB maxmemory limit with 'noeviction' policy now.
                _._                                                 
          _.-``__ ''-._                                           
      _.-``    `.  `_.  ''-._          Redis 2.6.14 (00000000/0) 32 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                 
 (    '      ,      .-`  | `,    )    Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|    Port: 6379
 |    `-._  `._    /    _.-'    |    PID: 2918
  `-._    `-._  `-./  _.-'    _.-'                                 
 |`-._`-._    `-.__.-'    _.-'_.-'|                                 
 |    `-._`-._        _.-'_.-'    |                 
  `-._    `-._`-.__.-'_.-'    _.-'                                 
 |`-._`-._    `-.__.-'    _.-'_.-'|                                 
 |    `-._`-._        _.-'_.-'    |                                 
  `-._    `-._`-.__.-'_.-'    _.-'                                 
      `-._    `-.__.-'    _.-'                                     
          `-._        _.-'                                         
              `-.__.-'                                             

[2918] 03 Jul 09:05:01.029 # Server started, Redis version 2.6.14
[2918] 03 Jul 09:05:01.030 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
[2918] 03 Jul 09:05:01.030 * The server is now ready to accept connections on port 6379

附2:把Redis作为Linux服务开机启动

这里只提供一种最简单的方式,最好的是通过编写开机启动脚本来做。
 
如果要开机启动redis,我们需要把redis设置为daemon后台启动(如果不设置为后台启动,则linux启动后图形界面会卡在一个空白的页面),而redis只有1个启动参数,就是redis的配置文件路径。redis的默认配置文件redis.conf位于redis的安装目录下。我们可以把该文件copy到/etc目录下

[root@localhost redis-2.6.14]# cp redis.conf /etc/

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/18014.html