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' ;)

编译成功,问题已搞定!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值