来源:自学PHP网 时间:2014-12-14 21:15 作者: 阅读:次
[导读] 这篇文章主要介绍了如何正确使用Nodejs 的 c++ module 链接到 OpenSSL,需要的朋友可以参考下...
事情的起因是这样的, 因为某些原因, 最近在写 Nodejs 的 c++ module, 然后在js这边调用。 网络通信自然离不开ssl, 于是需要链接到Openssl的库。 我们本来的期望是,需要用户安装有Openssl的运行库, 然后我们的c++ module 动态链接到Openssl的so库上来运行。 起初一切看起来还不错,直到我们发现这个openssl的函数不能工作: PKCS7_sign() 如果我们的 c++ 模块与Openssl库动态链接的话, 编译都没问题. 但是运行会出现: PKCS7_sign 符号无法找到的错误. 同时, google上搜索了 nodejs linking to openssl 类似的关键字. 找到这样几篇文章: https://github.com/TooTallNate/node-gyp/wiki/Linking-to-OpenSSL https://github.com/joyent/node/issues/3915 https://github.com/robhawkes/node-extension/issues/1 通过搜索, 我们发现, 原来Nodejs自己也使用了Openssl 库, 推测nodejs自己的crypto模块也是使用Openssl lib实现的. 这点从Nodejs的源码中就能发现, 它包含了最新的Openssl的全部源码. 其中写上面第一篇文章: https://github.com/TooTallNate/node-gyp/wiki/Linking-to-OpenSSL 的那个帅哥是Nodejs的开发人员. 基本结论: Nodejs 自己使用了Openssl Node 解释的原因: Node 自己编译之后, 把自己没用到的符号清除, 所以我们在运行时就找不到符号了. 于是他们把这bug 修掉了. 保留了全部符号. 这导致 Node 的体积大了 400k. 感谢Node的快速回复, 不得不佩服Node的活跃程度. 赞. |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com