Redis4.0源码编译和启动

该博客介绍了如何在Mac上编译Redis 4.0,包括创建CMakeLists.txt文件,设置源码路径,解决编译报错,以及在Clion中打开项目并配置调试。在遇到make报错时,需要修改redis-4.0/src/debug.c文件。完成编译后,可以通过IDE的CMake功能生成Debug配置,并启动redis-server进行调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境

系统:MacBook-Pro
IDE:Clion

源码下载

本博客下载的版本是Redis 4.0
GitHub - redis/redis at 4.0

编译准备

下载完源码后,不要立即导入到IDE中,首先在下列文件夹下创建CMakeLists.txt。

redis-4.0/CMakeLists.txt

cmake_minimum_required(VERSION 3.15)
project(redis-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/adlist.c
        src/ae.c
        src/anet.c
        src/dict.c
        src/sds.c
        src/zmalloc.c
        src/lzf_c.c
        src/lzf_d.c
        src/pqsort.c
        src/zipmap.c
        src/sha1.c
        src/ziplist.c
        src/release.c
        src/networking.c
        src/util.c
        src/object.c
        src/db.c
        src/replication.c
        src/rdb.c
        src/t_string.c
        src/t_list.c
        src/t_set.c
        src/t_zset.c
        src/evict.c
        src/defrag.c
        src/module.c
        src/quicklist.c
        src/expire.c
        src/childinfo.c
        src/redis-check-aof.c
        src/redis-check-rdb.c
        src/lazyfree.c
        src/geohash.c
        src/rax.c
        src/geohash_helper.c
        src/siphash.c
        src/geo.c
        src/t_hash.c
        src/config.c
        src/aof.c
        src/pubsub.c
        src/multi.c
        src/debug.c
        src/sort.c
        src/intset.c
        src/syncio.c
        src/cluster.c
        src/crc16.c
        src/endianconv.c
        src/slowlog.c
        src/scripting.c
        src/bio.c
        src/rio.c
        src/rand.c
        src/memtest.c
        src/crc64.c
        src/bitops.c
        src/sentinel.c
        src/notify.c
        src/setproctitle.c
        src/blocked.c
        src/hyperloglog.c
        src/latency.c
        src/sparkline.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
        )
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)

redis-4.0/src/modules/CMakeLists.txt

cmake_minimum_required(VERSION 3.9)
set(CMAKE_BUILD_TYPE "Debug")
add_library(helloworld SHARED helloworld.c)
set_target_properties(helloworld PROPERTIES PREFIX "" SUFFIX ".so")


add_library(hellotype SHARED hellotype.c)
set_target_properties(hellotype PROPERTIES PREFIX "" SUFFIX ".so")


add_library(helloblock SHARED helloblock.c)
set_target_properties(helloblock PROPERTIES PREFIX "" SUFFIX ".so")


add_library(testmodule SHARED testmodule.c)
set_target_properties(testmodule PROPERTIES PREFIX "" SUFFIX ".so")

redis-4.0/deps/CMakeLists.txt

add_subdirectory(linenoise)
add_subdirectory(lua)
add_subdirectory(hiredis)

redis-4.0/deps/hiredis/CMakeLists.txt

add_library(hiredis STATIC
        hiredis.c
        net.c
        dict.c
        net.c
        sds.c
        async.c
        read.c
        )

redis-4.0/deps/linenoise/CMakeLists.txt

add_library(linenoise
        linenoise.c
        )

redis-4.0/deps/lua/CMakeLists.txt

add_subdirectory(src)

make编译

在redis-4.0目录下执行make命令

make报错,请查看“解决报错”:
在这里插入图片描述
make成功:
在这里插入图片描述

解决报错

从报错信息中可以排查出来,是redis-4.0/src/debug.c这个文件编译不通过,打开这个文件,如下图所示,把这些代码注释掉即可。
注意:如果提前用IDE打开了项目,解决完报错redis-4.0/src/debug.c后,请删除掉redis-4.0/.idea目录,完成make编译后,再用IDE打开项目,否则IDE可能不会生成Debug的配置,详见“IDE打开项目”。
在这里插入图片描述

在这里插入图片描述

IDE打开项目

make编译后再用IDE打开项目
在这里插入图片描述

这样IDE会出现弹框,帮你生成Debug的配置,如下图,直接点击OK。
在这里插入图片描述
点完OK后,发现出现了cmake-build-debug文件夹,并且调试的地方有了redis-cli | Debug

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

启动redis-server

启动时调试:
在这里插入图片描述
启动后控制台:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值