在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" ”。


另外,如果不想編譯優化的redis程序,可以使用“make noopt”命令。

發佈了67 篇原創文章 · 獲贊 1 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章