另外一个阅读openssl code的tip

本文介绍了解析 OpenSSL 中复杂的宏定义技巧,通过使用 MSVC 的 /P 选项或 GCC 的 -E 选项来生成预编译文件,帮助开发者更好地理解 OpenSSL 的源代码。

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

由于openssl代码非常复杂,尤其是用到了非常多不太常用的C技巧,像n多的宏定义,使得我们在查找一些函数,变量定义的时候非常麻烦,无论什么样的代码工具都没法定位到函数的原始定义处。

对于通过宏来定义的函数和变量,如果我们去一层层的将宏扩展开来分析,将会是非常麻烦的,就像我之前所作的那样,需要不少的时间,而且有的时候不一定对。

幸好编译器在预编译阶段已经帮我们将所有的宏都展开,所以我们可以利用这一点来获取预编译的结果。

对于MSVC的编译器CL,有一个选项/P可以将预编译的结果写到一个文件中,如xxx.c写为xxx.i,然后只需要打开xxx.i就可以看到完整的预编译结果,包括include了哪些头文件,信息非常的全。/P输出的内容太全,所以文件会比较的大,/EP会少很多,但是/EP是输出到标准输出,不是直接到文件的,也不好,也可以将/EP的结果重定向到文件来比较完美的解决这个问题。

对于GCC,有更多的选项可以做到,像-E, –S,-c等等,可以仔细去看下GCC的帮助文档。

当然,预编译的结果不像代码本身那样组织的很好,便于阅读,只能用于参考还行。

【版权声明】<br>本openssl的VC软件包由王志海(DragonKing)根据openssl整理提供,Eric Young's拥有对所有源代码的最终版权,一切应用应该遵照openssl的声明。该版本为openssl-0.9.6h<br>欢迎联系本人或提意见:<br>Email:wzhah@263.net<br>HomePage: http://gdwzh.126.com[openssl中文专业论坛,提供大量中文资料]<br>【功能说明】<br>本软件包将每个openssl的apps程序做成一个可直接运行调试的VC Console 类型应用程序,方便研究和运用openssl的朋友,避免了openssl在windows下的编译问题,并且因为可以在VC环境下进行调试,使得对openssl的各个应用程序的流程更容易理解,这对openssl初学者尤其方便。希望大家多提意见。<br>【使用说明】<br>要正确使用该工程文件,呢应该从http://gdwzh.126.com获取如下目录和文件:<br>1.Windows平台下openssl动态库,包含两个dll文件,将他们拷贝到Windows/system32目录下;<br>2.Windows平台下openssl静态库,下载解压后得到一个名为lib的文件夹,包含两个lib文件;<br>3.openssl的头文件,下载解压后得到一个名为include的录。<br>4.Windows平台rsa项目文件,下载解压后得到一个名为rsa的目录,里面包含了项目主文件;<br>5.将目录lib、include、和rsa拷贝到同一个目录下;<br>6.完成上述步骤,就可以像普通的VC项目一样进行调试编译了,有任何问题,请到http://openssl.126.com提问。<br>【注意】<br>1.获取最新信息请到http://gdwzh.126.com的openssl专业论坛.<br>2.编译好的运用程序有可能需要其它的openssl文件支持,如openssl.cnf等,请参照openssl相关文档或本站信息公布。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值