我是靠谱客的博主 简单豌豆,最近开发中收集的这篇文章主要介绍Macosx 系统编译安装 redis-6.0.5,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题,编译安装 redis-6.0.5,

megumikichikus-MacBook-Pro:redis-6.0.5 ~ $ make

cd src && /Applications/Xcode.app/Contents/Developer/usr/bin/make all

    CC Makefile.dep

    CC adlist.o

    CC quicklist.o

    CC ae.o

    CC anet.o

    CC dict.o

    CC server.o

    CC sds.o

    CC zmalloc.o

    CC lzf_c.o

    CC lzf_d.o

    CC pqsort.o

    CC zipmap.o

    CC sha1.o

    CC ziplist.o

    CC release.o

    CC networking.o

    CC util.o

    CC object.o

    CC db.o

    CC replication.o

    CC rdb.o

    CC t_string.o

    CC t_list.o

    CC t_set.o

    CC t_zset.o

    CC t_hash.o

    CC config.o

    CC aof.o

    CC pubsub.o

    CC multi.o

    CC debug.o

    CC sort.o

    CC intset.o

    CC syncio.o

    CC cluster.o

    CC crc16.o

    CC endianconv.o

    CC slowlog.o

    CC scripting.o

    CC bio.o

    CC rio.o

    CC rand.o

    CC memtest.o

    CC crcspeed.o

    CC crc64.o

    CC bitops.o

    CC sentinel.o

    CC notify.o

    CC setproctitle.o

    CC blocked.o

    CC hyperloglog.o

    CC latency.o

    CC sparkline.o

    CC redis-check-rdb.o

    CC redis-check-aof.o

    CC geo.o

    CC lazyfree.o

    CC module.o

    CC evict.o

    CC expire.o

    CC geohash.o

    CC geohash_helper.o

    CC childinfo.o

    CC defrag.o

    CC siphash.o

    CC rax.o

    CC t_stream.o

    CC listpack.o

    CC localtime.o

    CC lolwut.o

    CC lolwut5.o

    CC lolwut6.o

    CC acl.o

    CC gopher.o

    CC tracking.o

    CC connection.o

    CC tls.o

    CC sha256.o

    CC timeout.o

    CC setcpuaffinity.o

    LINK redis-server

ld: archive has no table of contents file '../deps/hiredis/libhiredis.a' for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

make[1]: *** [redis-server] Error 1

make: *** [all] Error 2

解决方式:

根据系统现状选择合适的Command Line Tools ,对于我当前的系统对应的是如下版本的,

"Description"    "Release Date"
"Command Line Tools for Xcode 11.3.1"    "Jan 13, 2020"

下载安装后,开始如下操作,

megumikichikus-MacBook-Pro:~ $ sudo find / -name ar

Password:

/usr/bin/ar

/Library/Developer/CommandLineTools/usr/bin/ar

/opt/local/bin/ar

/opt/local/share/locale/ar

megumikichikus-MacBook-Pro:~ $ which ar

/opt/local/bin/ar

megumikichikus-MacBook-Pro:~ $ which ar

/opt/local/bin/ar

megumikichikus-MacBook-Pro:~ $ ls -lhi /opt/local/bin/ar

7403107 -r-xr-xr-x  1 root  admin    35K May 16  2014 /opt/local/bin/ar

 

查明原因,进行如下操作,

megumikichikus-MacBook-Pro:~ $ sudo mv /opt/local/bin/ranlib /opt/local/bin/ranlib-2014

megumikichikus-MacBook-Pro:~  $ sudo ln -s /Library/Developer/CommandLineTools/usr/bin/libtool /opt/local/bin/ranlib

megumikichikus-MacBook-Pro:~  $ sudo mv  /opt/local/libexec/gnubin/libtool  /opt/local/libexec/gnubin/libtool-2014

megumikichikus-MacBook-Pro:~  $ sudo ln -s /Library/Developer/CommandLineTools/usr/bin/libtool /opt/local/libexec/gnubin/libtool

megumikichikus-MacBook-Pro:~  $ sudo mv /opt/local/bin/ar /opt/local/bin/ar-2014

megumikichikus-MacBook-Pro:~  $ sudo ln -s /Library/Developer/CommandLineTools/usr/bin/ar /opt/local/bin/ar

 

再次编译,

megumikichikus-MacBook-Pro:redis-6.0.5 ~ $ make

cd src && /Applications/Xcode.app/Contents/Developer/usr/bin/make all

    CC Makefile.dep

rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark

rm -f adlist.d quicklist.d ae.d anet.d dict.d server.d sds.d zmalloc.d lzf_c.d lzf_d.d pqsort.d zipmap.d sha1.d ziplist.d release.d networking.d util.d object.d db.d replication.d rdb.d t_string.d t_list.d t_set.d t_zset.d t_hash.d config.d aof.d pubsub.d multi.d debug.d sort.d intset.d syncio.d cluster.d crc16.d endianconv.d slowlog.d scripting.d bio.d rio.d rand.d memtest.d crcspeed.d crc64.d bitops.d sentinel.d notify.d setproctitle.d blocked.d hyperloglog.d latency.d sparkline.d redis-check-rdb.d redis-check-aof.d geo.d lazyfree.d module.d evict.d expire.d geohash.d geohash_helper.d childinfo.d defrag.d siphash.d rax.d t_stream.d listpack.d localtime.d lolwut.d lolwut5.d lolwut6.d acl.d gopher.d tracking.d connection.d tls.d sha256.d timeout.d setcpuaffinity.d anet.d adlist.d dict.d redis-cli.d zmalloc.d release.d ae.d crcspeed.d crc64.d siphash.d crc16.d ae.d anet.d redis-benchmark.d adlist.d dict.d zmalloc.d siphash.d

(cd ../deps && /Applications/Xcode.app/Contents/Developer/usr/bin/make distclean)

(cd hiredis && /Applications/Xcode.app/Contents/Developer/usr/bin/make clean) > /dev/null || true

(cd linenoise && /Applications/Xcode.app/Contents/Developer/usr/bin/make clean) > /dev/null || true

(cd lua && /Applications/Xcode.app/Contents/Developer/usr/bin/make clean) > /dev/null || true

(cd jemalloc && [ -f Makefile ] && /Applications/Xcode.app/Contents/Developer/usr/bin/make distclean) > /dev/null || true

(rm -f .make-*)

(rm -f .make-*)

echo STD=-std=c11 -pedantic -DREDIS_STATIC='' >> .make-settings

echo WARN=-Wall -W -Wno-missing-field-initializers >> .make-settings

echo OPT=-O2 >> .make-settings

echo MALLOC=libc >> .make-settings

echo CFLAGS= >> .make-settings

echo LDFLAGS= >> .make-settings

echo REDIS_CFLAGS= >> .make-settings

echo REDIS_LDFLAGS= >> .make-settings

echo PREV_FINAL_CFLAGS=-std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb   -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src >> .make-settings

echo PREV_FINAL_LDFLAGS=  -g -ggdb >> .make-settings

(cd ../deps && /Applications/Xcode.app/Contents/Developer/usr/bin/make hiredis linenoise lua)

(cd hiredis && /Applications/Xcode.app/Contents/Developer/usr/bin/make clean) > /dev/null || true

(cd linenoise && /Applications/Xcode.app/Contents/Developer/usr/bin/make clean) > /dev/null || true

(cd lua && /Applications/Xcode.app/Contents/Developer/usr/bin/make clean) > /dev/null || true

(cd jemalloc && [ -f Makefile ] && /Applications/Xcode.app/Contents/Developer/usr/bin/make distclean) > /dev/null || true

(rm -f .make-*)

(echo "" > .make-ldflags)

(echo "" > .make-cflags)

MAKE hiredis

cd hiredis && /Applications/Xcode.app/Contents/Developer/usr/bin/make static 

cc -std=c99 -pedantic -c -O3 -fPIC  -I/usr/local/opt/openssl/include -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb net.c

cc -std=c99 -pedantic -c -O3 -fPIC  -I/usr/local/opt/openssl/include -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb hiredis.c

cc -std=c99 -pedantic -c -O3 -fPIC  -I/usr/local/opt/openssl/include -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb sds.c

cc -std=c99 -pedantic -c -O3 -fPIC  -I/usr/local/opt/openssl/include -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb async.c

cc -std=c99 -pedantic -c -O3 -fPIC  -I/usr/local/opt/openssl/include -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb read.c

cc -std=c99 -pedantic -c -O3 -fPIC  -I/usr/local/opt/openssl/include -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb sockcompat.c

ar rcs libhiredis.a net.o hiredis.o sds.o async.o read.o sockcompat.o

/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libhiredis.a(sockcompat.o) has no symbols

MAKE linenoise

cd linenoise && /Applications/Xcode.app/Contents/Developer/usr/bin/make

cc  -Wall -Os -g  -c linenoise.c

MAKE lua

cd lua/src && /Applications/Xcode.app/Contents/Developer/usr/bin/make all CFLAGS="-O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' " MYLDFLAGS="" AR="ar rcu"

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lapi.o lapi.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lcode.o lcode.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ldebug.o ldebug.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ldo.o ldo.c

ldo.c:496:7: warning: unused variable 'c' [-Wunused-variable]

  int c = luaZ_lookahead(p->z);

      ^

1 warning generated.

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ldump.o ldump.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lfunc.o lfunc.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lgc.o lgc.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o llex.o llex.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lmem.o lmem.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lobject.o lobject.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lopcodes.o lopcodes.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lparser.o lparser.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lstate.o lstate.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lstring.o lstring.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ltable.o ltable.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ltm.o ltm.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lundump.o lundump.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lvm.o lvm.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lzio.o lzio.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o strbuf.o strbuf.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o fpconv.o fpconv.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lauxlib.o lauxlib.c

lauxlib.c:577:61: warning: while loop has empty body [-Wempty-body]

   while ((c = getc(lf.f)) != EOF && c != LUA_SIGNATURE[0]) ;

                                                            ^

lauxlib.c:577:61: note: put the semicolon on a separate line to silence this warning

1 warning generated.

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lbaselib.o lbaselib.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ldblib.o ldblib.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o liolib.o liolib.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lmathlib.o lmathlib.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o loslib.o loslib.c

loslib.c:60:3: warning: 'tmpnam' is deprecated: This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tmpnam(3), it is

      highly recommended that you use mkstemp(3) instead. [-Wdeprecated-declarations]

  lua_tmpnam(buff, err);

  ^

./luaconf.h:657:33: note: expanded from macro 'lua_tmpnam'

#define lua_tmpnam(b,e)         { e = (tmpnam(b) == NULL); }

                                       ^

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h:186:1: note: 'tmpnam' has been explicitly marked deprecated here

__deprecated_msg("This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of tmpnam(3), it is highly recommended that yo...

^

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h:191:48: note: expanded from macro '__deprecated_msg'

        #define __deprecated_msg(_msg) __attribute__((__deprecated__(_msg)))

                                                      ^

1 warning generated.

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ltablib.o ltablib.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lstrlib.o lstrlib.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o loadlib.o loadlib.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o linit.o linit.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lua_cjson.o lua_cjson.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lua_struct.o lua_struct.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lua_cmsgpack.o lua_cmsgpack.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lua_bit.o lua_bit.c

ar rcu liblua.a lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o strbuf.o fpconv.o lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o lstrlib.o loadlib.o linit.o lua_cjson.o lua_struct.o lua_cmsgpack.o lua_bit.o # DLL needs all object files

ranlib liblua.a

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lua.o lua.c

cc -o lua  lua.o liblua.a -lm 

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o luac.o luac.c

cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o print.o print.c

cc -o luac  luac.o print.o liblua.a -lm 

    CC adlist.o

    CC quicklist.o

    CC ae.o

    CC anet.o

    CC dict.o

    CC server.o

    CC sds.o

    CC zmalloc.o

    CC lzf_c.o

    CC lzf_d.o

    CC pqsort.o

    CC zipmap.o

    CC sha1.o

    CC ziplist.o

    CC release.o

    CC networking.o

    CC util.o

    CC object.o

    CC db.o

    CC replication.o

    CC rdb.o

    CC t_string.o

    CC t_list.o

    CC t_set.o

    CC t_zset.o

    CC t_hash.o

    CC config.o

    CC aof.o

    CC pubsub.o

    CC multi.o

    CC debug.o

    CC sort.o

    CC intset.o

    CC syncio.o

    CC cluster.o

    CC crc16.o

    CC endianconv.o

    CC slowlog.o

    CC scripting.o

    CC bio.o

    CC rio.o

    CC rand.o

    CC memtest.o

    CC crcspeed.o

    CC crc64.o

    CC bitops.o

    CC sentinel.o

    CC notify.o

    CC setproctitle.o

    CC blocked.o

    CC hyperloglog.o

    CC latency.o

    CC sparkline.o

    CC redis-check-rdb.o

    CC redis-check-aof.o

    CC geo.o

    CC lazyfree.o

    CC module.o

    CC evict.o

    CC expire.o

    CC geohash.o

    CC geohash_helper.o

    CC childinfo.o

    CC defrag.o

    CC siphash.o

    CC rax.o

    CC t_stream.o

    CC listpack.o

    CC localtime.o

    CC lolwut.o

    CC lolwut5.o

    CC lolwut6.o

    CC acl.o

    CC gopher.o

    CC tracking.o

    CC connection.o

    CC tls.o

    CC sha256.o

    CC timeout.o

    CC setcpuaffinity.o

    LINK redis-server

    INSTALL redis-sentinel

    CC redis-cli.o

    LINK redis-cli

    CC redis-benchmark.o

    LINK redis-benchmark

    INSTALL redis-check-rdb

    INSTALL redis-check-aof

 

Hint: It's a good idea to run 'make test' ;)

编译成功,问题已搞定!

最后

以上就是简单豌豆为你收集整理的Macosx 系统编译安装 redis-6.0.5的全部内容,希望文章能够帮你解决Macosx 系统编译安装 redis-6.0.5所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部