1. 程式人生 > >【Redis】在樹莓派(Raspberry Pi)上編譯 redis

【Redis】在樹莓派(Raspberry Pi)上編譯 redis

在 Raspberry Pi 3B 上編譯 Redis

主機硬體:Raspberry Pi 3B
系統:Ubuntu MATE 16.04
編譯器版本: gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0

Overview

下載原始碼

官網:
N/A

下載 v5.0.3 原始碼包:
N/A

解壓

進入原始碼所在位置:
N/A

解壓:

~ $ cd Downloads/Software
~/Downloads/Softeware $ ls redis
redis-5.0.3.tar.gz
~/Downloads/Software $ cd redis
~/Downloads/Software/redis $
~/Downloads/Software/redis $ tar -xvzf redis-5.0.3.tar.gz
....

N/A

準備環境

### 檢查系統位數
$ getconf LONG_BIT
32
### 檢查編譯器版本
$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/5/lto-wrapper Target: arm-linux-gnueabihf ... Thread model: posix gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.11) ### 安裝編譯所需的庫 $ sudo apt update $ sudo apt install g++-5-multilib gcc-5-multilib

安裝對應版本的 multilib
$ sudo apt search multilib 可以檢視該安裝哪一個
N/A

編譯

fix compiler issue

~/Downloads/Software/redis/redis-5.0.3 $ ls
00-RELEASENOTES  INSTALL     runtest           tests
BUGS             Makefile    runtest-cluster   utils
CONTRIBUTING     MANIFESTO   runtest-sentinel
COPYING          README.md   sentinel.conf
deps             redis.conf  src
~/Downloads/Software/redis/redis-5.0.3 $ ### 安裝的是 32 位系統需要修改:
~/Downloads/Software/redis/redis-5.0.3 $ vim src/Makefile
#### 按下 "/" 再輸入 "m32",vim 底部出現:
/m32
#### 然後按下回車,vim 為搜尋”m32“ 匹配的行並且跳轉過去,看到:
32bit:
        @echo ""
        @echo "WARNING: if it fails under Linux you probably need to install libc6-dev-i386"
        @echo ""
        $(MAKE) CFLAGS="-m32" LDFLAGS="-m32"

gcov:

#### 游標會定位在上面的 >>>$(MAKE) CFLAGS="-m32" LDFLAGS="-m32"<<< 這一行。
#### 鍵盤按下 "I",啟用 vim 的”插入“操作(即編輯文件)
#### 將該行修改為:
#### >>>$(MAKE) CFLAGS="" LDFLAGS=""<<< 即刪除 "-m32" 的 compiler flag
#### 該段修改後顯示效果如下:
32bit:
        @echo ""
        @echo "WARNING: if it fails under Linux you probably need to install libc6-dev-i386"
        @echo ""
        $(MAKE) CFLAGS="" LDFLAGS=""

gcov:

#### 現在修改完成
#### 按下鍵盤 "ESC" 退出編輯模式
#### 再分別按順序按下
#### 鍵盤 ":" (這個輸入通過 "Shift"+";" 組合鍵輸入) > 鍵盤 "W" > 鍵盤 "Q" > 
####   最後按下鍵盤 "Enter" 回車實現儲存並退出。
#### (注意,上面的 "W", "Q" 並非指輸入大寫 WQ, 而是指鍵盤上的 [W] [Q] 印刷字樣)

開始編譯

~/Downloads/Software/redis/redis-5.0.3 $ make CFLAGS="-march=native"

測試編譯出來的軟體

~/Downloads/Software/redis/redis-5.0.3 $ make test
...這會執行一定長度的時間,在 RPi 3B 上大約半小時左右...

#### 可能會出現如下測試 fail 警告
!!! WARNING The following tests failed:

*** [err]: Server is able to generate a stack trace on selected systems in tests/integration/logging.tcl
expected stack trace not found into log file
Cleanup: may take some time... OK
make[1]: *** [test] Error 1
make[1]: Leaving directory `/home/joseph/Downloads/Software/redis/redis-5.0.3/src'
make: *** [test] Error 2

#### 沒有關係,redis 還是可以正常使用的。 
#### 這對這個測試項 fail 的 fix solution 個人還未找到。

執行

~/Downloads/Software/redis/redis-5.0.3 $ cd src
~/Downloads/Software/redis/redis-5.0.3/src $ ./redis-server --port 31752
2748:C 31 Dec 2018 19:57:25.304 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2748:C 31 Dec 2018 19:57:25.306 # Redis version=5.0.3, bits=32, commit=00000000, modified=0, pid=2748, just started
...
...

現在你可以在另外一個終端使用 redis-cli 來連結使用 redis 資料庫服務了。

使用 APT 直接安裝

$ sudo apt-get install redis-server
...

$ redis-server -v
Redis server v=3.0.6 sha=00000000:0 malloc=jemalloc-3.6.0 bits=32 build=28...8e