Redis6.0.8源码解析一之(Clion调试redis)

文章目录

在编译之前,需要在Cygwin64 Terminal上执行 mkreleasehdr.sh脚本,由于该脚本格式是win格式,所以需要执行dos2unix命令转换,转换完之后再执行。

##转换格式
dos2unix mkreleasehdr.sh

##执行mkreleasehdr.sh
./mkreleasehdr.sh

在这里插入图片描述
怀着信心满满的心情,配置好了之后开始编译,编译不过,说啥版本问题,于是考虑用VS编译,错误还多写,算了我还是用Cyg吧.
在这里插入图片描述

刚开始配置的时,遇到CMakeLists问题,由于是Clion自己生成的,于是编译不过,但是直接Makefile是可以编译的,于是考虑曲线救国,准备直接使用MakeFile编译调试,结果试了一下午,还是不行,
参考官网:https://blog.jetbrains.com/zh-hans/2019/05/14/clion/

https://blog.jetbrains.com/clion/2018/08/working-with-makefiles-in-clion-using-compilation-db/

于是还是回到CmakeLists上,找到了一份6.0的配置,但是一堆错误.
首先遇到libevent问题,于是下载源码,准备编译
在这里插入图片描述

结果遇到openssl问题.于是下载openssl源码进行编译,结果需要下载Perl.下载了Perl还要下Python,还要下NASM,然后…我整个人都崩溃了在这里插入图片描述
在这里插入图片描述

$ apt-cyg install perl-ExtUtils-MakeMaker

在这里插入图片描述
在这里插入图片描述

.然后自己尝试写CMakeLists.txt,写了4个版本的,终于6配置好了
在这里插入图片描述

配了一天半,终于配置好了.
在这里插入图片描述
甚至不需要微调,最新版本也是可以用的.厉害了有没有,好了吃饭去了.
在这里插入图片描述
配置如下:
redis\CMakeLists.txt

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(redis VERSION 4.0)
set(CMAKE_BUILD_TYPE "Debug")
get_filename_component(REDIS_ROOT "${CMAKE_CURRENT_SOURCE_DIR}" ABSOLUTE)

add_subdirectory(deps)
add_subdirectory(src/modules)
set(SRC_SERVER_TMP
        src/acl.c
        src/adlist.c
        src/ae.c
      #  src/ae_kqueue.c
        src/anet.c
        src/aof.c
        src/bio.c
        src/bitops.c
        src/blocked.c
        src/childinfo.c
        src/cluster.c
        src/config.c
        src/connection.c
        src/crc16.c
        src/crc64.c
        src/db.c
        src/debug.c
        src/defrag.c
        src/dict.c
        src/endianconv.c
        src/evict.c
        src/expire.c
        src/geo.c
        src/geohash.c
        src/geohash_helper.c
        src/gopher.c
        src/hyperloglog.c
        src/intset.c
        src/latency.c
        src/lazyfree.c
        src/listpack.c
        src/localtime.c
        src/lolwut.c
        src/lolwut5.c
        src/lolwut6.c
        src/lzf_c.c
        src/lzf_d.c
        src/memtest.c
        src/module.c
        src/multi.c
        src/networking.c
        src/notify.c
        src/object.c
        src/pqsort.c
        src/pubsub.c
        src/quicklist.c
        src/rand.c
        src/rax.c
        src/rdb.c
        src/redis-check-aof.c
        src/redis-check-rdb.c
        src/release.c
        src/replication.c
        src/rio.c
        src/scripting.c
        src/sds.c
        src/sentinel.c
        src/setproctitle.c
        src/sha1.c
        src/sha256.c
        src/siphash.c
        src/slowlog.c
        src/sort.c
        src/sparkline.c
        src/syncio.c
        src/t_hash.c
        src/t_list.c
        src/t_set.c
        src/t_stream.c
        src/t_string.c
        src/t_zset.c
        src/tls.c
        src/tracking.c
        src/util.c
        src/ziplist.c
        src/zipmap.c
        src/zmalloc.c
        src/timeout.c
        src/crcspeed.c
        )
set(SRC_SERVER src/server.c ${SRC_SERVER_TMP})
set(SRC_CLI
        src/anet.c
        src/sds.c
        src/adlist.c
        src/redis-cli.c
        src/zmalloc.c
        src/release.c
        src/anet.c
        src/ae.c
        src/crc64.c
        src/crcspeed.c
        src/dict.c
        src/crc16.c
        src/siphash.c
        )


set(EXECUTABLE_OUTPUT_PATH src)
link_directories(deps/linenoise/ deps/lua/src deps/hiredis)

add_executable(redis-server ${SRC_SERVER})
target_include_directories(redis-server
        PRIVATE ${REDIS_ROOT}/deps/linenoise
        PRIVATE ${REDIS_ROOT}/deps/hiredis
        PRIVATE ${REDIS_ROOT}/deps/lua/src)
target_link_libraries(redis-server
        PRIVATE pthread
        PRIVATE m
        PRIVATE lua
        PRIVATE linenoise
        PRIVATE hiredis)


add_executable(redis-cli ${SRC_CLI})
target_include_directories(redis-cli
        PRIVATE ${REDIS_ROOT}/deps/linenoise
        PRIVATE ${REDIS_ROOT}/deps/hiredis
        PRIVATE ${REDIS_ROOT}/deps/lua/src)

target_link_libraries(redis-cli
        PRIVATE pthread
        PRIVATE m
        PRIVATE linenoise
        PRIVATE hiredis
        )

参考地址
https://blog.csdn.net/smart_an/article/details/107034253
https://blog.csdn.net/u013656184/article/details/88812572
https://www.sibida.net/article/23982/
https://sunznx.com/redis/redis-source-debug-with-clion.html 4
https://blog.csdn.net/smart_an/article/details/107034253
https://www.bilibili.com/video/av286334160/

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值