构buildOpenSSL VC ++静态64位库

我试图用VC ++ 2010build立OpenSSL 1.0.1e静态64位库(最后一个我成功构build的是1.0.1c,如果这可能是一个因素,而且目前我也能够成功构build没有问题的1.0.1e的32位味道。)

我相信,我正在使用ActiveState Perl,nasm和所有正确的工具来完成这个构build。 INSTALL.W64文件只有build立DLL的指令,不幸的是我无法使用。

我正在调用正确的“%VS100COMNTOOLS%…. \ vc \ bin \ x86_amd64 \ vcvarsx86_amd64.bat”来设置环境,并且确保ActivePerl位于我的path的开头。

我正在删除所有旧的公司*(除了“包括”当然),tmp *和出*文件夹之前试图build立。 我像过去一样调用“perlconfiguration不共享的VC-WIN64A” 虽然,我注意到这个版本中没有共享似乎是默认的。 我正在编辑ms \ do_win64a.bat并将no-asm更改为nasm,就像我在以前的版本中一样。

然后,我运行ms \ do_win64a.bat,并编辑生成的ms \ nt.mak文件,将“32”更改为“64”,这样可以让我的64位版本不会打破我的32位版本。 我也改变/ MD到/ MT(就像我以前一直做的那样),再次,为了我特定的构build环境的要求。

然后我运行ms \ nt.mak。 这似乎只用一些警告消息来构build所有的源代码,但是当makefile尝试编译libeay32.lib时,我得到了一个“在函数BN_GF2m_mod_mul_arr中引用的未parsing的外部符号bn_GF2m_mul_2x2”。 (这是在crypto \ bn \ bn_gf2m.c源代码。)

所以我知道这是因为OPENSSL_BN_ASM_GF2m是在我的CFLAG的nt.mak中定义的,如果我能更好地理解Perl编程,我可以追踪到我没有看到的configuration选项,但现在我无法想象它出。

再次,32位似乎工作得很好,遵循非常类似的构build指令。 我怀疑Eric Young和Tim Hudson是否可能没有时间来testing这个特定的构buildconfiguration,或者如果这是完全愚蠢的,我忽略了。

非常感谢任何能够帮助解决这个问题的人!

Solutions Collecting From Web of "构buildOpenSSL VC ++静态64位库"

好的,所以这个问题的答案似乎是两个小小的。 是的,64位版本的OpenSSL 1.0.1e的汇编版似乎还有更多的工作要做。 而且,是的,现在有一个很明显的解决办法。

在上面的perl配置步骤中使用no-asm指令时,我没有使用no-asm指令。

这当然会告诉OpenSSL我们不是在编译汇编库,所以它会在C代码中编译。 问题解决了!

感谢Eric和Tim,感谢您提供给我们其他人免费的这个非常有价值的软件库!