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的原因。至此,离真相越来越近了,尽管之后的过程中又遇到不少坑,但毕竟方向对了,最终也就搞定了。

 

转载于:https://www.cnblogs.com/yidev/p/6373283.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值