redis移植到mipsel-buildroot-linux-uclibc记录

移植redis到MT7621嵌入式设备上,虽然这个CPU性能不怎么样,也是够折腾,使用的是公司的buildroot工具链进行编译的。这里做个简单的记录。

首先是要搞定jemalloc库,库的编译倒是比较容易,因为有configure,所以也就容易了很多了:

jemalloc搞定后,还需要搞定hiredis以及lua,都搞定后,就开始搞redis了。编译的redis版本是3.2.9。

看了下redis的makefile也是够简单的。先把工程需要的一些配置整理进去:

添加了 V=1 CFLAGS=”$(CFLAGS)” LDFLAGS=”$(LDFLAGS)” ,V=1开起来,方便到时候编译的时候出错调试。

开始编译,出现了debug.c中的execinfo.h头文件找不到。宏HAVE_BACKTRACE是有开启的,查了下,这个是和C库相关的。make menuconfig查看了下uClibc:

需要开启UCLIBC_HAS_BACKTRACE这个开关:

再次编译工程,重新编译了uClibc,结果出现了函数program_invocation_name未能链接到,原因是因为UCLIBC_HAS_PROGRAM_INVOCATION_NAME没有开启。

开启后,再次编译。

结果链接找不到backtrace等函数,比较奇怪,uClibc已经开启了UCLIBC_HAS_BACKTRACE 开关了,去uClibc的文件夹使用readelf去查看链接符。

确实没有在libuClibc里面,但是在libubacktrace-0.9.33.2.so库中,看来uClibc与glibc是有些差异的。

修改redis的Makefile加上对ubacktrace的链接:

至此,redis编译成功。

转载请注明: 转载自elkPi.com

本文链接地址: redis移植到mipsel-buildroot-linux-uclibc记录

发表评论

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