1

我试图在 CentOS 5.8 上编译 Redis 2.6.4,但运行后出现以下错误make

zmalloc.o:在函数zmalloc_used_memory': /root/redis-2.6.4/src/zmalloc.c:223: undefined reference to __sync_add_and_fetch_4'中collect2:ld返回1退出状态make[1]: * [redis-server]错误1 make[1]:离开目录`/root/redis-2.6.4/src'make:* [全部] 错误 2

我也尝试过CFLAGS= -march=i686src/Makefile但没有奏效。其实,我不知道该放在哪里。我放在文件的顶部。

4

4 回答 4

2

1 添加CFLAGS= -march=i686到 src/Makefile 顶部

2 将 src/.make_settingsOPT=-O2改成OPT=-O2 -march=i686

3 然后make 32bit

4make test

这对我行得通。

附言。也许你会遇到tcl问题

1rpm -qa | grep tcl看tcl版本是不是吹8.5

2 如果是yum remove tcl

3 访问http://www.linuxfromscratch.org/blfs/view/cvs/general/tcl.html获取最新的并安装

4 进入redis目录make test

于 2013-02-17T06:28:40.067 回答
1

好的,我搞定了。我运行了以下似乎正常工作的命令(尽管稍后我需要安装 tcl8.5)。

make 32bit
于 2012-11-20T17:38:09.000 回答
0

正如@HungryCoder 所说,简单的“make 32bit”命令会起作用。

但有时,如果您已经遇到错误,您最好在运行之前删除名为 .make* 的文件。

make distclean
make

如果没有帮助,请尝试通过运行以下命令手动找出您的 CPU 架构:

export CFLAGS=`uname -m`
make distclean
make
于 2014-03-03T04:03:41.210 回答
0

我在编译它时遇到了一些问题,我通过首先安装以下依赖项来解决:

sudo yum -y install libstdc++*
sudo yum -y install libstdc++*.i686

然后我可以毫无问题地运行正确的make

make 32bit

我希望这可以帮助别人。

于 2015-10-02T14:24:19.050 回答