web-dev-qa-db-ja.com

Redisビルドの失敗

Redis-cliにアクセスして、awsでも正常に実行されている私のredisインスタンスに接続するために、aws linuxサーバーでredisを構築しようとしています。

私の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");

...そしてもっとたくさん

これは間違いなく他のすべての人のためにビルドするコードなので、私は何か間違ったことをしたに違いないと思います。私はa Java cの背景がほとんどない開発者です。どんなポインタでも大歓迎です。

ジェイ

2
JayOhBee

Redis 6xをビルドするにはgcc> = 4.9が必要であるようです...

4
samehere

回答ありがとうございます。私が最終的に解決したのは、CentOS8とgcc 8.3.1で新しいサーバーを構築することでした。この組み合わせにより、redisサーバー6.0.3が問題なく構築されました。教訓:新しいソフトウェアを適切に構築するには、最新のインフラストラクチャとソフトウェアが必要です。

0
JayOhBee

私は成功しました。最初にgcc6をインストールしたいのですが、もう一度失敗してから始めました。その後、devtoolset-6は非推奨になりました。 -7か-8を試してみてください。

次に、フローcmdを使用し、それが機能しました

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

だからあなたにも役立つことを願っています

0
Jim Yang