libcurl.a + sqlcipher 渊源

本文深入探讨了在Cocos2d-x 2.x环境中集成SQLCipher的过程,揭示了为何无需额外包含openssl静态库的原因。通过解析SQLCipher核心组件与libcurl.a静态库之间的关系,以及Cocos2d-x工程如何仅依赖关键源文件和头文件实现整合,阐述了这一集成背后的逻辑。

问题:cocos2d-x 中集成 sqlcipher,为啥不需要再包含 openssl 的静态库?

1)sqlcipher 中起作用的实际上只有 sqlite3.c 这一个源文件,它引用了 openssl 的几个头文件

#include <openssl/rand.h>

#include <openssl/evp.h>

#include <openssl/hmac.h>

2)cocos2d-x 2.x 的 libcurl.a 静态库文件中,实际上已经包含了 openssl 的目标文件(奇怪的是没找到 openssl 相关的头文件)

3)cocos2d-x 2.x 的工程集成 sqlcipher 只需要 sqlite3.c 源文件和 openssl 的相关头文件即可!

4)下面这个名为 Xxx-LinkMap-normal-arm64.txt 的文件,包含了要将哪些目标文件链接到最终的可执行文件的信息。可以看到,libcurl.a 静态库文件中确实是包含了 openssl 目标文件的(在 Build Settings 中搜索 map,Linking => Path to Link Map File => Debug 的值即为该文件的所在路径)

关键字:rand

[264] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(bn_rand.o)

[351] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(md_rand.o)

[367] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(rand_egd.o)

[368] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(rand_lib.o)

[369] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(rand_unix.o)

[404] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(tb_rand.o)

关键字:evp

[324] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(evp_asn1.o)

[325] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(evp_enc.o)

[326] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(evp_lib.o)

[327] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(evp_pbe.o)

关键字:hmac

[298] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(e_aes_cbc_hmac_sha1.o)

[307] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(e_rc4_hmac_md5.o)

[331] ~/cocos2d-x-2.2.6/cocos2dx/platform/third_party/ios/libraries/libcurl.a(hmac.o)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值