SylixOS 应用移植指导——以Redis5.0.3为例(四)

tc666
tc666
tc666
8
文章
1
评论
2021年7月2日17:56:33 评论 917

三、添加Makefile文件

前面我们知道了,要想编redis-server,需要先编译lua,要想编译redis-client,需要先编译linenoise、hiredis,什么,你说怎么知道的?不知道就看redis-server编译的link阶段打印,看看它链接了哪些库,比如-llua,-lhiredis。

简单分析一下,lua和hiredis是库的形式存在的,linenoise是单独编成.o链接的,那就不用管linenoise,到时候填到mk里就行,再仔细看看,lua是变成静态库,hiredis是编成动态库。

那就从lua开始,首先复制个mk,取个名叫liblua.mk。再回到Linux下,如果lua的编译流程没了,就make distclean一下,然后在deps目录下, make lua > ./lua.log,获得lua.log:lua

SylixOS 应用移植指导——以Redis5.0.3为例(四)

多么清晰的流程,需要编译的文件就是lapi.c、lcode.c、ldebug.c。。。编译参数是-O2 -Wall,实际上SylixOS工程自带了相关参数,不重要。定义的符号是:-DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''。

再往下看:

SylixOS 应用移植指导——以Redis5.0.3为例(四)

发现libua.a只需要ar 这些.o,而下面还编了个luac出来,对我们的redis没啥用,可以不管。

那么,我们的liblua.mk参考这些流程,应该很容易编写出来:

liblua

同样的,我们很容易编出libhiredis.mk:

libhiredis

一定要注意.c文件的路径问题。

这时候,我们工程应该是这样的:

SylixOS 应用移植指导——以Redis5.0.3为例(四)

注意,别忘了把自己创建的mk加入Makfile:

SylixOS 应用移植指导——以Redis5.0.3为例(四)

尝试编译一下,两个库都编出来了:

SylixOS 应用移植指导——以Redis5.0.3为例(四)

下面要开始编redis-server和redis-client了。

tc666
  • 本文由 发表于 2021年7月2日17:56:33
  • 转载请务必保留本文链接:http://www.databusworld.cn/10352.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: