windows平台安裝freerdp和openssl


網上的文章坑太多,這里做個記錄。

編譯openssl需要先安裝Perl,比較簡單這里略去。

openssl的下載要注意使用release的版本,而不是master,主要是ms目錄里要有do_*.bat等一堆文件,我下的master里沒有這些文件,以致走了許多彎路。

打開vs的工具命令提示控制台最好使用以管理員身份運行。

在openssl源代碼目錄環境下編譯openssl

1、cd  E:\opensource\openssl

2、perl Configure VC-WIN32 no-asm

必須指定no-asm,不然后邊很多編譯會報錯,如果指定--prefix=E:\openssl則會安裝到相應的目錄。

3、ms\do_nasm.bat

ms子目錄下生成nt.make和ntdll.make文件,由於指定了no-asm,所以在這里必須是do_nasm而不是do_ms,有說是perl Configure VC-WIN32生成do_等文件,純屬瞎掰,生成的是makefile文件。

4、nmake -f ms\nt.mak

在out32目錄下生成靜態庫

 

5、nmake -f ms\ntdll.mak (可選)

在out32dll目錄下生成動態庫,這條可選,因為cmake后邊的freerdp只需要靜態庫,兩個都生成一下用於編寫OpenSSL程序。這里簡單記錄一下:

 

#include <openssl/ssl.h>
#include <openssl/err.h>
#include <openssl/bio.h>
#pragma comment(lib, "libeay32.lib")

#pragma comment(lib, "ssleay32.lib")

將動態鏈接庫ssleay32.dll, libeay32.dll復制到C:\WINDOWS\system32或Debug目錄下,確保動態鏈接庫在正確的路徑。

6、nmake -f ms\nt.mak test (可選,用於測試,就不多說了)

7、nmake -f ms\nt.mak install

默認目錄在當前盤符的\usr\local\ssl路徑下。這一步驟不可少,否則安裝freerdp的時候會報找不到openssl的錯誤,這點我在后邊再敘述。

8、cd  E:\opensource\freerdp

 

切換到freerdp的解壓目錄

9、cmake . -DOPENSSL_ROOT_DIR=E:\usr\local\ssl -DOPENSSL_LIBRARIES=E:\usr\local\ssl\lib -DOPENSSL_INCLUDE_DIR=E:\usr\local\ssl\include

至此,如果不報錯,會在freerdp的目錄中生成vs的工程文件。

我在這里浪費了不少時間,常見的錯誤是:

Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES)

一直覺得是環境變量和系統路徑沒設置好的問題。更坑的是github上libssh的issues竟然說OPENSSL_LIBRARIES指向的應該是文件而不是路徑,然后各種的嘗試和搜索都沒有解決問題。其實cmake與環境變量和系統路徑關系不大,運行時指定即可。問題慢慢聚焦在openssl上,嘗試下載直接安裝了cmake仍然報錯,猜測可能缺少openssl-dev,然而linux可以直接apt-get install或yum install,而windows的chocolately卻不行,或是我沒找到,總之還得從openssl的源代碼編譯。由於這方面不熟悉,當初在沒有找到ms子目錄下do_*.bat等文件的情況下,直接nmake了makefile文件,然后又直接nmake install了。生成結果也有了,但隱藏的問題是生成的僅僅是運行時所需的文件,而freerdp的編譯需要openssl的開發版本。這也是報的那個錯老說找不到OPENSSL_LIBRARIES的原因。至此,離真相越來越近了,盡管之后的過程中又遇到不少坑,但畢竟方向對了,最終也就搞定了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM