问题
在学习redis源码的时候,只能傻傻的看代码,运行结果全靠猜,实在是忍受不了,就想着我能否像写php一样,不懂的直接运行起来
初试
想当然的,sds.c的文件嘛,直接使用如下命令
gcc sds.c -o sds.o
结果也很想当然的报错
本能的去指定头文件,依旧报错
gcc -I sds.h zmalloc.h sds.c -o sds.o
解决办法
google后得知,是动态链接库没指定好
首先删除’#ifdef SDS_TEST_MAIN’以及’#endif’,虽然我不太能看懂,猜测就是只有在’SDS_TEST_MAIN’这个存在的时候,才去定义main函数,由于我不知道SDS_TEST_MAIN他是在哪个文件中定义的,所以干脆直接删除,反正我也只是为了看运行结果
编译动态链接库
gcc zmalloc.c -fPIC -shared -o libzmalloc.so
命名的格式需要注意一下,lib+文件名+'.so'
指定动态链接库,编译sds.c
gcc sds.c -L. -l zmalloc -o sds.o
-L:添加库文件的搜索路径
-l:指定需要链接的库,该名字就是lib***.so中的名称
运行
./sds.o