三、添加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
多么清晰的流程,需要编译的文件就是lapi.c、lcode.c、ldebug.c。。。编译参数是-O2 -Wall,实际上SylixOS工程自带了相关参数,不重要。定义的符号是:-DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''。
再往下看:
发现libua.a只需要ar 这些.o,而下面还编了个luac出来,对我们的redis没啥用,可以不管。
那么,我们的liblua.mk参考这些流程,应该很容易编写出来:
同样的,我们很容易编出libhiredis.mk:
一定要注意.c文件的路径问题。
这时候,我们工程应该是这样的:
注意,别忘了把自己创建的mk加入Makfile:
尝试编译一下,两个库都编出来了:
下面要开始编redis-server和redis-client了。
评论