C++ Builder 编译Openssl记录
现在DELPHI,C++ BUILDER慢慢边缘化了,已经慢慢成了小众范围内使用了。以致很多好的东西也搜索不到。特别是在我们这个国度里,很多国外网站都给和谐了~现在我只记录一下我在编译使用OPENSSL过程中的一些问题。仅供自己以后忘记时复习。希望对新手有帮助,如果描述有误,还请多拍砖。
openssl是一个开源的软件,分为三个部分,加解密部分:囊括了现在流行的权威的加解密方法;SSL协议部分:包括通信方式封装的所有证书==API(很强大);OPENSSL应用程序部分:通过这部分更加快速学会里面的API使用。
1、从官网下载稳定版:http://www.openssl.org/source/ 我下载的是
4457113 May 10 17:20:24 2012 openssl-1.0.1c.tar.gz (MD5) (SHA1) (PGP sign) [LATEST](上面还有啥FIPS版本,没看懂啥意思。没敢下下来。有谁知道还请详细解释一下)
2、解压至C盘根目录下(具体为什么非要这个,没去折腾),即我的目录为:c:\openssl-1.0.1c
3、这一步我们就是要从网上下载一个PERL编译器,官网地址为:http://www.activestate.com/activeperl
4、到C++ BUILDER安装目录下搜索timeb.h,然后添加两个宏定义:
#if defined(__STDC__)
#pragma warn -nak
#endif
#endif /*
!RC_INVOKED */
//dont work for me 这里添加下面两个宏定义
#define _timeb timeb
#define
_ftime ftime
struct timeb {
long time;
short millitm;
short
timezone;
short dstflag;
};
5、到此我们环境搭建好了,开始进行编译了,从c:\openssl-1.0.1c\ms里我们会看到有一个bcb4.bak(不是说只支持BCB4,是现所有的bcb程序都是用这个批处理调用当前环境BCB编译器进行编译),然后在运行里输入:cmd,弹出MS-dos后。输入cd c:\openssl-1.0.1c 回车,然后输入:ms\bcb4.bat 回车,这个时候会在目录C:\openssl-1.0.1c下生成一个bcb.mak这样的makefile文件。此时修改里面的两个地方:
A) Change:
EX_LIBS=cw32mt.lib import32.lib
to
EX_LIBS=cw32mt.lib
import32.lib ws2_32.lib crypt32.lib
B) Change:
LFLAGS=-ap -Tpe -x -Gn
to
LFLAGS=-ap -Tpe -x -Gn -w-dup
好OK,对于BCB的改革就这两处,不用再改MAKEFILE里的任何东西了。对于VS编译器就还要改其它的,大家可以搜索相关的文章。
6、继续控制台执行:make -f bcb.mak回车,此时会调用BCB编译器进行一断长时间的编译链接,这个过程会把外部调用的头文件COPY到C:\openssl-1.0.1c\inc32\openssl这个新目录下,其次会生成相关应用程序、静态库等在C:\openssl-1.0.1c\out32目录下,我们需要的是将C:\openssl-1.0.1c\inc32\目录下的所有OPENSSL这个文件夹及内容拷到自己工程的头文件库里,然后将C:\openssl-1.0.1c\out32目录下两个LIB库拷到自己工程的LIB库里。然后就是设置IDE里LIB库路径和头文件路径 (这里要注意的是头文件路径一定要设置到OPENSSL上一级。我就是在这里弄错了,后来理解了因为头文件里引用的头文件前都会有OPENSSL/xxx.h这样子。即OPENSSL库默认是一定要有这个文件夹才行。)最后就可以引用对应的头文件使用里面加密程序了.
到此打完收工。有错误的地方还请多拍砖。以后会慢慢记录自己学习过程的东西。希望对新手有一定的帮助。
浙公网安备 33010602011771号