欢迎来到天天文库
浏览记录
ID:8803932
大小:37.50 KB
页数:4页
时间:2018-04-08
《mingw编译openssl错误解决》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、在Windows下用MinGW编译OpenSSL,及OpenSSL静态链接库libcrypto.a使用问题收藏最经我用MinGW编译OpenSSL的过程中发生了很多问题,不过好在已经解决了,现在写出来以备查询以OpenSSL-0.9.8l为例:前略(下载,解压)注意要安装Perl,如果你只是用来安装OpenSSL的可以下ActivePerl,以后还有其它用的下strawberry-perl(先说问题)使用MinGW编译OpenSSL时我发现有以下问题1、解压目录msmingw32.bat内的路径有问题,直接使用会报找
2、不到文件2、编译过程中报错(内容如下).cryptodesset_key.c:68:error:staticdeclarationof'_hide_DES_check_key'followsnon-staticdeclaration.cryptodesset_key.c:68:error:previousdeclarationof'_hide_DES_check_key'washeremingw32-make:***[tmpset_key.o]Error13、其它编译问题(我没有遇到,不过似乎官方有准备)4
3、、使用静态链接库libcrypto.a时libcrypto.a(rand_win.o)(.text+0xb13):rand_win.c:undefinedreferenceto'_CreateDCA@16'libcrypto.a(rand_win.o)(.text+0xb24):rand_win.c:undefinedreferenceto'_CreateCompatibleDC@4'等错误解决法案:一、解决这一种问题方法是将mingw32.bat从解压目录ms下面复制回解压目录下面,即将mingw32.bat放在解压
4、后的OpenSSL的根目录下二、编译过程中出现上述的报错,问题出在解压目录e_os2.h中:264行#defineOPENSSL_IMPLEMENT_GLOBAL(type,name)externtype_hide_##name;type*_shadow_##name(void){return&_hide_##name;}statictype_hide_##name其中的static修饰,解决方法有两个:1、将static修饰删了,不过这样可能会改变原来作者的意图2、这个方法有点麻烦需要修改解压目录e_os2.
5、h解压目录cryptodesenc_read.c解压目录cryptodesset_key.c这三个文件=======================================================================================解压目录e_os2.h:定位第255行(参照句出现的行号,并非需要修改的直接行号)做如下操作,每行前的-号代表删除行,+号代表添加行:Thewayit'sdoneallowsdefinitionslikethis://infoobar.
6、c-OPENSSL_IMPLEMENT_GLOBAL(int,foobar)=0;+OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0)//infoobar.hOPENSSL_DECLARE_GLOBAL(int,foobar);#definefoobarOPENSSL_GLOBAL_REF(foobar)*/#ifdefOPENSSL_EXPORT_VAR_AS_FUNCTION-#defineOPENSSL_IMPLEMENT_GLOBAL(type,name)-externtype_hid
7、e_##name;-type*_shadow_##name(void){return&_hide_##name;}-statictype_hide_##name+#defineOPENSSL_IMPLEMENT_GLOBAL(type,name,value)+type*_shadow_##name(void)+{statictype_hide_##name=value;return&_hide_##name;}#defineOPENSSL_DECLARE_GLOBAL(type,name)type*_shadow
8、_##name(void)#defineOPENSSL_GLOBAL_REF(name)(*(_shadow_##name()))#else-#defineOPENSSL_IMPLEMENT_GLOBAL(type,name)OPENSSL_GLOBALtype_shadow_##name+#defineOPENSS
此文档下载收益归作者所有