redis生成失败

0sgqnhkj  于 2021-06-09  发布在  Redis
关注(0)|答案(5)|浏览(312)

我正在尝试在我的aws linux服务器上构建redis,以便访问redis cli并连接到我的redis示例,该示例也在aws中成功运行。
我的gcc是:

gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)

我下载了源代码并开始生成:

wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make distclean      
make

它建立了依赖关系,然后给了我这个:

gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/tsd.o src/tsd.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/witness.o src/witness.c
ar crus lib/libjemalloc.a src/jemalloc.o src/arena.o src/background_thread.o src/base.o src/bin.o src/bitmap.o src/ckh.o src/ctl.o src/div.o src/extent.o src/extent_dss.o src/extent_mmap.o src/hash.o src/hooks.o src/large.o src/log.o src/malloc_io.o src/mutex.o src/mutex_pool.o src/nstime.o src/pages.o src/prng.o src/prof.o src/rtree.o src/stats.o src/sz.o src/tcache.o src/ticker.o src/tsd.o src/witness.o
make[3]: Leaving directory `/home/ec2-user/redis-stable/deps/jemalloc'
make[2]: Leaving directory `/home/ec2-user/redis-stable/deps'
    CC adlist.o
    CC quicklist.o
    CC ae.o
    CC anet.o
    CC dict.o
    CC server.o
In file included from server.c:30:0:
server.h:1044:5: error: expected specifier-qualifier-list before ‘_Atomic’
     _Atomic unsigned int lruclock; /* Clock for LRU eviction */
     ^
server.c: In function ‘serverLogRaw’:
server.c:1028:31: error: ‘struct redisServer’ has no member named ‘logfile’
     int log_to_stdout = server.logfile[0] == '\0';
                               ^
server.c:1031:23: error: ‘struct redisServer’ has no member named ‘verbosity’
     if (level < server.verbosity) return;
                       ^
server.c:1033:47: error: ‘struct redisServer’ has no member named ‘logfile’
     fp = log_to_stdout ? stdout : fopen(server.logfile,"a");

……还有更多
我假设我一定是做错了什么,因为这是毫无疑问为其他人构建的代码。我是一个java开发人员,几乎没有c语言背景。任何提示都将不胜感激。
松鸦

zbsbpyhn

zbsbpyhn1#

我成功了。一开始我想安装gcc6,但又失败了一次,然后我注意到devtoolset-6已被弃用。也许你应该试试-7或-8。
然后我使用flow命令,它就成功了

yum install -y devtoolset-6-gcc devtoolset-7-gcc-c++

所以我希望它也能帮助你

clj7thdc

clj7thdc2#

谢谢你的回复。我最终得到的解决方案是用centos8和GCC8.3.1构建一个新服务器。这种组合构建了redis服务器6.0.3,没有任何问题。寓意:你需要有最新的基础设施和软件,以正确地建立新的软件。

ztyzrc3y

ztyzrc3y3#

这里的问题是最新的redis版本( 6.0.7 )取决于 _Atomic 旧版本中不支持 gcc 4.8.5 . 还可以使用 clang 如果无法更新gcc版本。

$ cd redis-stable
$ CC=clang make
zte4gxcn

zte4gxcn4#

下载旧版本,6.0似乎有些问题。*在ubunt14.04 lts上对我有用

wlzqhblo

wlzqhblo5#

似乎gcc>=4.9是构建redis 6x所必需的。。。

相关问题