记录一次widora sdk编译ipk 实战编译redis



  • 因为业务需求,需要用到redis存储一点简单的数据,因为redis有良好的哈希机制,可以完美实现我的某些需求,但openwrt官方提供memcached的ipk并没有提供redis,没办法,只能自己编译了,编译的redis版本3.2.1
    1.下载redis:http://download.redis.io/releases/redis-3.2.1.tar.gz
    2.在openwrt-widora的package目录下创建redis目录,把解压出来的redis目录mv到此目录下,改名为src,在平级目录(openwrt-widora的package下刚刚创建的redis目录)下创建Makefile
    0_1509552860645_3f18cebe-c2d9-4cea-9ad7-6215dc231194-image.png
    内容如下:
    见附件:
    0_1509553050003_Makefile.txt
    -------------------****************************** Makefile end *******************************************
    修改src里的src下的config.h文件(也就是redis目录下的config.h文件)
    vim src/src/config.h
    把#define HAVE_BACKTRACE 1 注掉 ,如下图
    0_1509552601835_eff02f79-8a9b-43b1-a11c-e05db7fc98f2-image.png
    然后回到widora 的sdk目录下,make menuconfig,找到Diy pack进入,选择redis(如果是ipk则标注为M,如果编译进固件则是*)
    然后正常make -j4 如果一切顺利的话,在sdk的bin/ramips/packages/base/中可以找到前缀为redis的ipk文件
    将对应ipk下载下来上传到neo或bit3、bit4中,opkg install redis_xxx.ipk即可
    0_1509552513708_75290fea-eeb4-4ee5-aebf-7a1eeafa991b-image.png
    创建redis.conf文件,内容如下
    bind 127.0.0.1
    protected-mode yes
    port 6379
    tcp-backlog 511
    timeout 0
    tcp-keepalive 300
    daemonize yes
    supervised no
    pidfile /tmp/redis_6379.pid
    loglevel notice
    logfile ""
    databases 16
    save 900 1
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir ./
    slave-serve-stale-data yes
    slave-read-only yes
    repl-diskless-sync no
    repl-diskless-sync-delay 5
    repl-disable-tcp-nodelay no
    slave-priority 100
    appendonly no
    appendfilename "appendonly.aof"
    appendfsync everysec
    no-appendfsync-on-rewrite no
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    aof-load-truncated yes
    lua-time-limit 5000
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    latency-monitor-threshold 0
    notify-keyspace-events ""
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-size -2
    list-compress-depth 0
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    hll-sparse-max-bytes 3000
    activerehashing yes
    client-output-buffer-limit normal 0 0 0
    client-output-buffer-limit slave 256mb 64mb 60
    client-output-buffer-limit pubsub 32mb 8mb 60
    hz 10
    aof-rewrite-incremental-fsync yes
    ------************* redis.conf end *********************---------------
    然后 redis-server 您的路径/redis.conf 启动redis
    运行效果
    0_1509552488285_5f5d4d75-006d-493f-a90e-ec2798e76c0b-image.png
    客户端(客户端编译需要的包为redis-cli,Makefile要对应修改一下,上边我给出的Makefile有注释这部分)实测连接:
    0_1509552466313_8b88b5a9-b4ad-46c1-9f3b-5d4d253e043c-image.png
    ok,完工
    0_1509553050003_Makefile.txt
    0_1509553536298_redis.conf
    1_1509553097407_redis_server_1_ramips_24kec.ipk
    0_1509553097407_redis_cli_1_ramips_24kec.ipk