本文介绍了构建OpenSSL的VC ++静态64位利布斯的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图打造的OpenSSL 1.0.1e静态64位的库用VC ++ 2010(最后一个,我成功地建造这样被1.0.1c,如果这可能是一个因素。目前我也能成功打造1.0.1e没有问题的32位的味道。)

I am attempting to build OpenSSL 1.0.1e static 64-bit libs with VC++ 2010. (The last one that I successfully built like this was 1.0.1c, if that might be a factor. And currently I am also able to successfully build the 32-bit flavor of 1.0.1e with no problems.)

我使用的ActiveState Perl中,NASM,和所有正确的工具做这个版本,我相信。该INSTALL.W64文件只有建立该DLL,不幸的是我不能使用的指令。

I am using ActiveState Perl, nasm, and all the correct tools to do this build, I believe. The INSTALL.W64 file only has instructions for building the DLL, which unfortunately I cannot use.

我打电话正确的%VS100COMNTOOLS%.... \ VC \ BIN \ x86_amd64 \ vcvarsx86_amd64.bat来设置环境,而我确保的activeperl是我的道路的开始。

I am calling the proper "%VS100COMNTOOLS%....\vc\bin\x86_amd64\vcvarsx86_amd64.bat" to set up the environment, and I am making sure that ActivePerl is on the beginning of my path.

我删除所有的旧有限公司*(除了包括)当然,TMP *和试图建立之前出*文件夹。我称之为perl的配置不共享的VC-WIN64A正如我在过去做了;虽然,我注意到,没有共享的似乎是默认的这个版本。我编辑MS \ do_win64a.bat和不断变化的无ASM来NASM,因为我在previous版本。

I am deleting all the old inc* (except "include" of course), tmp* and out* folders before trying to build. I call "perl Configure no-shared VC-WIN64A" as I did in the past; although, I notice that no-shared seems to be the default in this version. I am editing the ms\do_win64a.bat and changing no-asm to nasm, as I have in previous versions.

然后我运行MS \ do_win64a.bat,并编辑生成的MS \ nt.mak文件,以改变32至64中的一部分,让我的64位建立从弄错我的32位版本。我也改/ MD到/ MT(正如我在过去一直做的),再次为我的具体编译环境的要求。

Then I run ms\do_win64a.bat, and edit the resulting ms\nt.mak files to change "32" to "64" in part to keep my 64-bit builds from clobbering my 32-bit builds. I also change /MD to /MT (as I have always done in the past), again, for my specific build environment requirements.

然后我运行MS \ nt.mak。这似乎编译所有来源只有几个警告信息,但是当makefile文件试图编译libeay32.lib,我得到一个函数BN_GF2m_mod_mul_arr引用解析外部符号bn_GF2m_mul_2x2。 (这是在加密\ BN \ bn_gf2m.c源$ C ​​$ C)

Then I run ms\nt.mak. This seems to build all the sources with only a few warning messages, but when the makefile tries to compile libeay32.lib, I get an " unresolved external symbol bn_GF2m_mul_2x2 referenced in function BN_GF2m_mod_mul_arr." (This is in crypto\bn\bn_gf2m.c source code.)

所以,我知道这是因为OPENSSL_BN_ASM_GF2m是在我nt.mak CFLAG定义,如果我理解Perl编程好一点,我大概可以跟踪哪些配置选项,我没有看到,但现在我只可以 W图吧。

So I know this is because OPENSSL_BN_ASM_GF2m is defined in my CFLAG in nt.mak, and if I understood Perl programming a little better, I could probably track down which configuration option I am not seeing, but right now I just can't figure it out.

此外,32位,似乎只是正常工作下非常相似的构建说明。我不知道是否有可能令人尊敬的埃里克·杨和蒂姆·哈德森还没有时间来检验这种特殊的生成配置,或者是一些完全傻了,我俯瞰。

Again, 32-bit seems to work just fine following very similar build instructions. I wonder if possibly the venerable Eric Young and Tim Hudson have not had time to test this particular build configuration, or if it is something completely silly that I am overlooking.

感谢这么多的人谁也许能帮助调试这个问题!

Thanks so much to anyone who might be able to help debug this issue!

推荐答案

确定,所以这个问题的答案似乎是两者都有一点。是的,确实出现了一些更多的工作做的64位版本的OpenSSL 1.0.1e的汇编版本。而且,对了,还有一个变通暂时应该是很明显的。

OK, so the answer to this question appears to be a little of both. Yes, there does appear to be some more work to do with the assembler version of the 64-bit version of OpenSSL 1.0.1e. And, yes, there is a work-around for the time being that should have been obvious.

使用无汇编指令我在那里用在上面的perl的配置步骤没有共享。

Using the no-asm instruction where I was using no-shared in the perl Configuration step above.

这,当然,告诉OpenSSL的,我们没有建立组装库,所以它会在C code编译代替。问题解决了!

This, of course, tells OpenSSL that we are not building assembler libs, so it will compile in the C code instead. Problem solved!

谢谢,埃里克和蒂姆,为您提供给我们其他免费这个非常有价值的软件库!

Thanks, Eric and Tim, for this very valuable software library that you provide to the rest of us for free!

这篇关于构建OpenSSL的VC ++静态64位利布斯的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 12:54