在Solaris上编译redis(2.8.13)

最近由于工作需要,又要做redis相关的工作。正好今天早上redis发布了最新的2.8.13版本,于是就下载了最新的版本并试着在Solaris上编译了一下,还是发现了一些问题。于是在此记录下来,说不定对其他人会有帮助。

(1)Solaris 9

我先选了一台Solaris 9,结果一开始编译就遇到“IPV6_V6ONLY”未定义错误。上网查了一下,发现Solaris不支持这个socket选项。我改了一点代码,绕过去这个问题,结果再编译遇到了没有stdint.h文件这个错误。于是果断决定放弃Solaris 9,转投Solaris 10。

(2)Solaris 10

Solaris 10上的编译过程还是比较顺利的,但是链接时出了两个问题:

a)nanosleep函数没有定义:Solaris上调用nanosleep,需要链接“rt library”,即在Makefile里加上“-lrt”。我把这个patch报给了redis(https://github.com/NanXiao/redis/commit/232d77938add77d95c91a714462389e62e2bf126),不过不确定redis会不会采纳。

b)isinf没有定义,需要在调用make命令时传入MISSING_ISINF宏定义,即“make “CFLAGS+=-DMISSING_ISINF” ”。

《在Solaris上编译redis(2.8.13)》有2个想法

  1. 你好,我在solaris 10上面编译redis的时候也遇到你这两个问题,其中nanosleep的问题在makefile里面加上-lrt,编译通过,第二个问题我执行的gmake “CFLAGS+=-DMISSING_ISINF” 还是不能正确连接,请问需要怎么解决?
    报错:
    未定义 文件中的
    符号 在文件中
    isinf ../deps/lua/src/liblua.a(lua_cmsgpack.o)
    ld: 致命的: symbol referencing errors. No output written to redis-server

发表评论

邮箱地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.