openssl怎么编译成动态库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openssl怎么编译成动态库相关的知识,希望对你有一定的参考价值。

Windows下编译OpenSSL动态库的方法:
1、安装ActivePerl

初始化的时候,需要使用perl
2、使用VS下的Visual Studio 20xx Command Prompt进入控制台模式
3、解压缩openssl的包,通过cd命令切换到openssl的目录
4、执行:perl configure VC-WIN32
5、执行:ms/do_ms
6、选择不同的编译结果
1) 执行:nmake -f ms/ntdll.mak
该命令生成动态库,默认使用的是MD
2) 执行:nmake -f ms/nt.mak
该命令生成静态库,默认使用的是MT
3) 想生成使用静态链接运行时库的动态库则采用下面方法
复制一个ntdll.mak并命名为ntdll_mt.mak,修改里面的 “CFLAG= /MD /Ox ..............” 为/MT ,然后重新编译,执行 nmake -f ms/ntdll_mt.mak
4) 想生成使用动态链接运行时库的静态库则采用下面方法
复制一个nt.mak并命名为nt_md.mak,修改里面的 “CFLAG= /MT /Ox ..............” 为/MD ,然后重新编译 ,执行 nmake -f ms/nt_md.mak
7.其它命令:
nmake -f ms/ntdll.mak clean // 清除编译的中间文件
nmake -f ms/ntdll.mak install // 安装 ,主要是linux下面会自动放到程序目录中 。
参考技术A 1、静态编译
./Configure linux-elf-arm -DB_ENDIAN linux:'armeb-linux-gcc -mbig-endian' --prefix=$(pwd)/OpenSSL
a、 将openssl-0.9.8d/crypto/bio/bss_file.c中以下代码注释掉
//#ifndef _FILE_OFFSET_BITS
//#define _FILE_OFFSET_BITS 64
//#endif
#endif
b、 报错没有timeb.h时,在报错的.c文件中#undef TIMEB
c、 去掉openssl顶层Makefile中“build_all:”后面的 build_app build_test (我们要的只是两个静态库libcrypto.a和libssl.a),并去掉”DIRS=”后面的app和tests。
make && make install

2、动态库
1.config:
#config no-asm --prefix=../OpenSSL
2.改Makefile
1) CC= gcc 改成 CC = armeb-linux-gcc;
2) 删除 CFLAG= 中的 “-march=pentium”;
3) AR=ar $(ARFLAGS) r 改为 AR=armeb-linux-ar $(ARFLAGS) r;
4) ARD=ar $(ARFLAGS) d 改为 ARD=armeb-linux-ar $(ARFLAGS) d;
5)RANLIB= /usr/bin/ranlib 改为 RANLIB= armeb-linux-ranlib;
3.编译
#make
#make install本回答被提问者和网友采纳

怎么把自己写的函数编译到动态库中

参考技术A 用反编译软件如PE explorer查看

以上是关于openssl怎么编译成动态库的主要内容,如果未能解决你的问题,请参考以下文章

VS2010 编译 openssl 源代码(输出 libeay32 and ssleay32 静态库和动态库)

linux下,有几个.so。如何将这几个动态库编译成一个动态库

表格树控件QtTreePropertyBrowser编译成动态库(设计师插件)

动态库编译详解

Nginx编译配置脚本篇- 动态库配置脚本auto/lib/conf

VS2012编译的DLL动态库为啥在VS2012上调用正常,在VS2008上使用失败