FreeRDP在Windows上编译详细过程

1. 前言

FreeRDP是远程桌面协议(RDP)的一个开源实现版本,对于我们的学习和使用都有很大的帮助作用。最近由于需要用户RDP协议的windows客户端,所以打算在Windows上编译下FredRDP,因为之前都是在Linxu开发程序居多,所以也借此机会记录一下windows编译开源软件的一个过程,用于自我学习。

2. 编译前的准备工作

2.1. Visual Studio 2019

Visual Studio是windows平台开发一个常用的开发IDE工具,我们本次编译的主要开发工具就是Visual Studio,这次使用的是2019版本,其他最新版本的使用也是大同小异的。

2.2. CMake

本次编译过程需要使用到cmake程序,用于生成Visual Studio 的开发工程文件,本次编译使用的是 cmake 3.27.1版本,下载地址为:https://cmake.org/download/,我们可以在该地址下找到对应的windows平台安装包。

2.3. libusb

libusb是编译FreeRDP时会用到的头文件和lib库文件,本次编译使用的是v1.0.24版本,该版本的文件夹下会根据不同的VS版本,提供不同的库文件,对我们比较友好。下载地址:https://github.com/libusb/libusb/releases/tag/v1.0.24,下载 libusb-1.0.24.7z 文件即可。

 2.3-libusb

2.4. openssl

openssl也是我们编译需要使用的库,下载地址:https://slproweb.com/products/Win32OpenSSL.html,我们选择Win64 v1.1.1版本,所以我下载的版本为:Win64OpenSSL-1_1_1v.msi。

2.4-openssl版本文件

下载后,直接安装即可,安装后需要在环境变量中新增系统变量,以我的本地配置为例,需要新增如下变量:

OPENSSL_INCLUDE_DIR = D:\Program Files\OpenSSL-Win64\include

OPENSSL_ROOT_DIR = D:\Program Files\OpenSSL-Win64

2.5. FreeRDP源码

我使用的是FreeRDP最新版本的源码,下载地址为:https://github.com/FreeRDP/FreeRDP

3. 编译zlib库

因为最新的FreeRDP把zlib库当做必选项,所以我们需要zlib库的头文件和库文件。由于没有找到编译好的库文件,所以我们需要先编译一下zlib库。

3.1. zlib库下载

下载地址:https://github.com/madler/zlib/releases,我们使用最新的zlib 1.3版本。

 3.1-zlib库下载

3.2. 编译zlib库

采用cmake生成VS 工程文件,编译过程如下:

首先,配置源代码路径和build路径。

 3.2-zlib编译

其次,点击 Configure 按钮,开始生成配置:

 3.2-zlib编译1

最后,点击 Generate 生成工程文件,然后点击 Open Project 打开工程文件。

 3.2-zlib_generate

3.3. 安装zlib库

在上述点击 Open Project 后,会自动打开VS2019,找到INSTALL项目。

首先,右键选择:设为启动项目。

 3.3.-zlib_vs编译1

其次,右键点击生成。

 3.3-zlib_vs生成

生成成功后,详情显示如下:

 3.3-zlib_vs生成详情

目前是生成在C:\Program Files\zlib\路径下,如果是其他路径,则可能需要加入到环境变量中,大家视具体情况而定。

4. 使用CMake生成FreeRDP的VS解决方案

4.1. 配置源码和build路径

这一步,我们需要通过CMake生成VS解决方案,首先打开CMake软件,配置FreeRDP源码和build路径。FreeRDP源码就选择本地的源码路径,build路径则放到源码路径下,后续会在该目录下生成工程文件。

 4.1-cmake创建

点击 Configure 按钮,开始生成配置:

 4.1-cmake第一次配置

4.2. 配置LIBUSB路径

首先,我们先把下载的libusb-1.0.24拷贝到FreeRDP目录下,其中include目录和VS2019是我们要用到的目录。

 4.2-libusb目录

其次,搜索LIBUSB,找到对应的选项,进行配置:

 4.2-cmake_libusb配置

配置完成后,配置值如下:

 4.2-cmake_libusb配置完成

4.3. 处理配置错误

4.3.1. zlib库找不到错误:

第一次生成配置,可能会有很多错误,比如说下面这个错误,就是没有ZLIB库导致的错误,我们按照第三章的步骤生成zlib库后,就不会有该错误了。

 4.3.1-cmake_zlib配置错误1

4.3.2. openssl库未配置环境变量错误:

安装了openssl后,如果未配置环境变量,就会出现如下的错误,解决办法就是配置环境变量,新增如下系统变量(以我自己的配置为例):

OPENSSL_INCLUDE_DIR = D:\Program Files\OpenSSL-Win64\include

OPENSSL_ROOT_DIR = D:\Program Files\OpenSSL-Win64

 4.3.2-cmake_openssl错误

配置好后,需要先关闭CMake,再重新打开,主要是为了重新加载环境变量,然后再次点击 Configure 按钮即可。

4.3.3. 去掉不需要的模块:

除此之外,还会有一些其他的错误

 4.3.3-cmake_ffmpeg错误

该错误是找不到FFmpeg,但是实际上我们用不到FFmpeg 模块,那么我们就可以在编译选项中去掉,比如FFMPEG模块,我们就可以去掉,搜索WITH_FFMPEG,去掉 Value 的勾选。

 4.3.3-cmake_with_ffmpeg

类似的模块还有:WITH_SWSCALE、WITH_AAD以及WITH_CLIENT_SDL(这个选项可以不去掉),都需要把勾选去掉。我们只需要去掉一个模块后,再次点击 Configure ,如果发现还有不需要的模块,搜索去掉即可。

4.4. 生成工程文件以及配置编辑过程

如果 Configure 没有错误,则点击 Generate 进行生成,然后点击 Open Project 打开工程文件。

 4.4-cmake_generate

4.5. 配置工程文件

打开vs工程文件后,首先,需要在工程文件中添加对libusb的依赖项,打开工程文件,在 Client->Common下,找到freerdp-client项目,右键选择属性,在属性->链接器->输入->附加依赖项 中增加如下配置即可。

我们可以直接增加 D:\work\windows\FreeRDP\libusb-1.0.24\VS2019\MS64\dll\libusb-1.0.lib 这个配置,或者把D:\work\windows\FreeRDP\libusb-1.0.24\VS2019\MS64\dll\libusb-1.0.lib 拷贝到 build\Debug目录下,然后增加 ..\..\Debug\libusb-1.0.lib 这个配置也可以。

 4.5-freerdp-vsproject-配置1

 4.5-freerdp-vsproject-配置2

 4.5-freerdp-vsproject-配置3

如果在编译过程中遇到其他的找不到符号等错误,只需要找到对应的静态库进行链接即可。

4.6. 编译&运行程序

最后找到wfreerdp-client项目, 右键选择生成即可。在build\Debug目录下, 会生成我们需要的程序,如果实际需要运行程序,可能还需要把libusb-1.0.dll和zib的dll库 zlibd.dll 拷贝到Debug目录下。最终,Debug目录下的wfreerdp.exe就是我们需要的程序。

 4.6-freerdp-vsproject-生成

5. 结语

以上就是windows下编译FreeRDP的所有步骤,希望可以给大家带来一些帮助。后续会继续介绍其他FreeRDP的功能和特性。

posted @ 2023-09-08 21:19  shawn_chang  阅读(3420)  评论(0编辑  收藏  举报