当前位置: 代码迷 >> 综合 >> Macosx 系统编译安装 redis-6.0.5
  详细解决方案

Macosx 系统编译安装 redis-6.0.5

热度:64   发布时间:2024-01-31 21:21:15.0

问题,编译安装 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' ;)

编译成功,问题已搞定!