2017-05-07 98 views
0

我正在嘗試構建openssl庫。我克隆一個回購從GitHub https://github.com/openssl/openssl爲什麼我嘗試使用Visual Studio工具在Windows上構建OpenSSL失敗?

現在使用Visual Studio 2013年此命令行的「命令行」:enter image description here

我用下一個命令: CD C:\程序\ OpenSSL的 - 轉到使用OpenSSL回購文件夾

perl配置VC-WIN64A --prefix = C:\ Programs \ openssl-build - 實際上,我不知道這個命令實際上做了什麼,該命令有一個輸出

enter image description here

和「是的,我有'Perl的,當然我安裝'Perl的」

而接下來(最後)命令,這是我寫的TS只是簡單的「nmake」。最後因爲這個命令的輸出有一些「致命錯誤」,它不讓我繼續安裝enter image description here

正如你所看到的,主要錯誤是「致命錯誤LNK1112:模塊機器類型'X86'與目標衝突機器類型'x64'「。據我所知,參數機器類型可以在Microsoft Visual Studio GUI中的Solution屬性中提供,但是如何從命令行設置它我不知道,而且openssl不能由Microsoft Visual Studio Solution代表,它可以打開由MS Visual Studio提供。

所以,也許有人知道如何從命令行設置此屬性,或者,也許這個錯誤並不取決於此,有人知道如何解決這個問題。

我希望能爲您提供幫助。請大家,第二天我試着解決這個問題,你是我的最後機會!

+0

你'配置'你正在構建64位,但是你打開了一個適用於32位版本的cmd.exe環境。 *如果*您有64位操作系統,則需要* VS2013 x64本地工具命令提示符*。另外,你爲什麼試圖建立一個OpenSSL的開發版本? –

+0

@SinanÜnür不幸的是,它並沒有幫助。沒有什麼變化。 – Dmitrii

+1

請註明錯誤。圖片上的文字太小而無法閱讀。另外,文本不能被搜索引擎索引給未來的訪問者。請說明Windows的確切版本,並確保包含它的X86或X64。最後,說明開發人員提示的cpu是什麼。 – jww

回答

1

這是我做的。首先,我打開一個命令提示符64位構建:

$ cl 
Microsoft (R) C/C++ Optimizing Compiler Version 18.00.40629 for x64

然後,我下載了current 1.1 release tarball。沒有理由混淆開發版本,除非您實際開發OpenSSL並且您有能力在開發版本中調試問題。

$ curl -O https://www.openssl.org/source/openssl-1.1.0e.tar.gz 
$ tar xvf openssl-1.1.0e.tar.gz 
$ cd openssl-1.1.0e 

在這一點上,我讀INSTALL我建議你也這樣做,而不是說「我不知道這是什麼命令exectly做」。一旦你讀了INSTALL,你就會知道這個命令實際上做了什麼。

$ perl Configure --prefix=%TEMP%\openssl VC-WIN64A 
$ nmake 

這給了我沒有任何錯誤,所以我繼續發出

$ nmake test 

這給了我

Microsoft (R) Program Maintenance Utility Version 12.00.21005.1 
Copyright (C) Microsoft Corporation. All rights reserved. 

     set SRCTOP=. 
     set BLDTOP=. 
     set PERL=C:\opt\perl\5.24.1\bin\perl.exe 
     set OPENSSL_DEBUG_MEMORY=on 
     "C:\opt\perl\5.24.1\bin\perl.exe" ".\test\run_tests.pl" 
test\recipes\01-test_abort.t ............ ok 
test\recipes\01-test_sanity.t ........... ok 
test\recipes\01-test_symbol_presence.t .. ok 
... 
test\recipes\90-test_sslapi.t ........... ok 
test\recipes\90-test_threads.t .......... ok 
test\recipes\90-test_v3name.t ........... ok 
All tests successful. 
Files=91, Tests=433, 100 wallclock secs (0.66 usr + 0.27 sys = 0.92 CPU) 
Result: PASS

在這一點上,我很肯定nmake install也很成功,但我不想替換我的系統上的任何東西。

您沒有Perl或與編程有關的問題。

+0

nmake測試和nmake安裝結束與'nmake'相同的錯誤信息。它不起作用 – Dmitrii

+0

這是因爲你沒有完全按照步驟操作。 –

-1

我想你忘了運行配置腳本生成的ms\do_ms.bat文件。

下面是我用於在PC上構建OpenSSL的腳本。

先決條件:

  1. 您的電腦上安裝Perl。我想我使用ActivePerl,但我懷疑任何版本都可以。
  2. 安裝NASM。 http://www.nasm.us/
  3. 安裝Visual Studio

然後保存下面的腳本文件名爲bldenv.cmd

REM ###################################### 
REM MODIFY THESE VARIABLES BELOW TO POINT TO YOUR NASM, PERL, and VISUAL STUDIO PATHS 
REM Base Variables 
SET _BLD_NASM=c:\nasm\bin 
SET _BLD_PERL=c:\perl64\bin 
SET _BLD_VSTUDIO=c:\vstudio 

REM ###################################### 


Echo Initializing the Visual Studio Build environment 
call %_BLD_VSTUDIO%\VC\vcvarsall.bat x86 

Echo adding Perl to Path 
set PATH=%_BLD_PERL%;%PATH% 

Echo Adding NASM to Path 
set PATH=%_BLD_NASM%;%PATH% 

echo ####################################### 
echo Build environment is ready 
echo TO BUILD: 
echo  perl Configure VC-WIN32 (or perl Configure debug-VC-WIN32) 
echo  ms\do_nasm.bat 
echo  nmake -f ms\ntdll.mak  (or nmake -f ms\nt.mak for a static lib) 
echo ####################################### 

然後建:

  1. 打開一個乾淨的命令shell窗口。最好你的PATH環境已經是「乾淨」的,並且不包含Visual Studio。此外,您的環境不應設置任何LIBINCLUDE值。 (在命令提示符處鍵入set如果您沒有看到LIB或INCLUDE的條目,那很好)。

  2. cd到您的openssl源代碼目錄。將上面的bldenv.cmd腳本複製到此目錄。

    上方運行(bldenv.cmd)

    然後運行該腳本:ms\do_nasm.bat

    其次:nmake -f ms\ntdll.mak

應該這樣做。

+0

不,錯誤的診斷。 'ms \ do_ms.bat'只適用於1.0.x版本。他正在建立'1.1.1-dev'。閱讀當前的[INSTALL](https://github.com/openssl/openssl/blob/3556b83ea2a00d0dd3e4f1ec38adb6837553e451/INSTALL#L93),而不是提供不正確和過時的答案。 –

+0

然後,也許OP應該切換到OpenSSL 1.0.2。 :) – selbie

相關問題