Openssl在wince下的编译

 1.       在wince下编译openssl需要以下几种外界工具
* Microsoft eMbedded Visual C++ 3.0
* wcecompat compatibility library (www.essemer.com.au)
* Optionally ceutils for running automated tests (www.essemer.com.au)
另外还需要Win32的Perl,如ActiveState Perl(http://www.activestate.com/ActivePerl)
Wince靠wcecompat来支持openssl,如果有什么问题,查阅http://www.essemer.com.au/windowsce/更新。目前wcecompat的版本是1.1,支持WCE 4.2以及更新的平台,
2.       编译过程如下:
1.安装eMebedded Visual C++开发环境,有批处理文件随eVC++一起安装,对于ARMV4处理器,执行:
> C:Program FilesMicrosoft eMbedded C++ 4.0EVCwce420 inWCEARMV4.BAT
下一步指定wcecompat文件夹的位置(放在c盘根目录以外的位置有在后面的过程中可能会报错):
> set WCECOMPAT=C:wcecompat
接着进入openssl安装包目录,例如:C:openssl-0.9.8a,执行Configure:
> perl Configure VC-CE
然后build makefile:
> msdo_ms
下面建立静态链接库:
> nmake -f msce.mak
或建立DLL:
> nmake -f mscedll.mak
如果nmake提示缺少头文件或者LIB文件,有两个原因,一是wcecompat尚未编译形成LIB提供给nmake,二是eVC++设置的环境变量不正确。前者,进入wcecompat目录下执行nmake -f makefile,成功之后,在子目录LIB文件夹下,有wcecompat.lib和wcecompatex.lib两个文件;后者,修改之前执行的WCEARMV4.BAT文件,将SDKROOT目录设置为SDK的安装目录分别在set INCLUDE=后添加;%SDKROOT%%OSVERSION%%PLATFORM%includeEmulator;和set LIB=后添加;%SDKROOT%%OSVERSION%%PLATFORM%libEmulator;保存修改后重新nmake
编译openssl的结果保存在..openssl-0.9.8aout32_ARMV4中,其中有所需的两个LIB或DLL和一些测试的可执行程序。LIB可在visual studio2005下使用。
3.       如何使用openssl编译后的结果(仅LIB):
1)        新建visual studio2005 智能设备项目
2)        项目->属性->C/C++->附加包含目录,添加wcecompatinclude,openssl-0.9.8ainclude两个目录(根据个人设置补全路径)
3)        项目->属性->链接器->输入->附加依赖项,添加ssleay32.lib,libeay32.lib,wcecompat.lib,wcecompatex.lib(如果仍不识别,将这四个lib文件拷贝到当前项目目录下)
4)        编译自己的工程,如果出现:
a.obj : error LNK2019: unresolved external symbol __security_cookie referenced in function "void __cdecl mymethod(char *)" (?mymethod@@YAXPEAD@Z) a.obj : error LNK2019: unresolved external symbol __security_check_cookie referenced in function "void __cdecl mymethod(char *)" (?mymethod@@YAXPEAD@Z) a.exe : fatal error LNK1120: 2 unresolved externals
等问题,项目->属性->C/C++->代码生成->缓冲区安全检查,将“是”该为“否(/GS-)”
原文地址:https://www.cnblogs.com/googlegis/p/2979241.html