使用自己制定的openssl
来源:互联网 发布:windows media playe 编辑:程序博客网 时间:2024/04/29 07:09
若程序需要调用openssl,但是系统的不见得就是需要的版本,这时候可以自身编译一个版本出来,然后引用当前目录的libssl.so。
所以需要在编译时指定so,并且用patchelf来修改程序查找so的目录。
并且,libssl.so本身是依赖于libcrypto.so,所以也需要修改它的路径。
第一步,编译openssl
mkdir objscd objswget http://www.openssl.org/source/openssl-1.0.1c.tar.gztar xf openssl-1.0.1c.tar.gzcd openssl-1.0.1c./config sharedmake
第二步,编译程序
g++ -o objs/smart_server objs/openssl-1.0.1c/libcrypto.so objs/openssl-1.0.1c/libcrypto.so
编译时,不是用-lssl,而是指定so的path。可以用-Iobjs/openssl-1.0.1c/include来指定包含的头文件。
这时候,查看程序的依赖,是指向系统的ssl的。
[winlin@dev6 smart-server]$ ldd objs/smart_server libssl.so.1.0.0 => /usr/lib64/libssl.so.1.0.0 (0x0000003731800000)libcrypto.so.1.0.0 => /usr/lib64/libcrypto.so.1.0.0 (0x000000372fc00000)
编译工具patchelf:
cd objswget http://hydra.nixos.org/build/1524660/download/3/patchelf-0.6.tar.gztar xf patchelf-0.6.tar.gzcd patchelf-0.6./configuremake修改路径:
[winlin@dev6 smart-server]$ ./objs/patchelf-0.6/src/patchelf --set-rpath objs/openssl-1.0.1c ./objs/smart_server [winlin@dev6 smart-server]$ ldd objs/smart_server libssl.so.1.0.0 => objs/openssl-1.0.1c/libssl.so.1.0.0 (0x00007f13a9560000)libcrypto.so.1.0.0 => objs/openssl-1.0.1c/libcrypto.so.1.0.0 (0x00007f13a9185000)
这个时候就指向了自定义的目录。
注意:需要先修改libssl的路径,否则libcrypt还是会指向系统目录:
./objs/patchelf-0.6/src/patchelf --set-rpath objs/openssl-1.0.1c ./objs/openssl-1.0.1c/libcrypto.so
有时候编译也没有问题,就是运行出错,因为系统的版本是1.0.0,而我们编译的是1.0.1c,有细微的差别,可能出现某些符号没有定义。所以一定要修改libssl.so依赖的libcrypt的路径。
这样修改,不会影响系统的openssl,唯一注意的是启动程序时必须在程序所在的目录启动,否则会找不到so。
- 使用自己制定的openssl
- 制定自己的优先级
- 怎样制定自己的职业规划
- 如何制定自己的触发器
- 制定自己的SMART目标
- 实验四.制定自己的文件系统实验
- 怎样制定适合自己的学习计划?
- 制定自己的Log 日志工具
- OpenSSL建立自己的CA
- 自己制定IE ToolsBar
- 制定自己 ant 标签
- 【2014】如何制定一个适合的自己的计划
- OpenSSL的简单使用
- OpenSSL的使用
- openssl的使用
- Openssl命令的使用
- OpenSSL的简单使用
- OpenSSL 的使用详解
- Memory marshalling in Windows CE
- windows API
- 什么是DOS操作系统
- python的pip和virtualenv使用心得
- java书单
- 使用自己制定的openssl
- pig中cogroup的使用
- RTT探测
- 时光小偷
- T-SQL查询:行列转换简单实例
- MySQL体系结构
- linux下apache安装
- Android SystemClock
- 自动引用技术ARC