Ubuntu 18.0.4 FreeRDP编译环境搭建

本文详述在Ubuntu 18.04上搭建FreeRDP编译环境的过程,包括系统环境介绍、安装gmake、下载FreeRDP项目、解决依赖库问题及编译中遇到的错误。通过一系列步骤,成功编译出精简版的xfreerdp可执行文件。
摘要由CSDN通过智能技术生成

Ubuntu 18.0.4 FreeRDP编译环境搭建

前言

最近需要对 RDP 进行裁剪,首先就需要搭建 RDP 的编译环境,于是就使用了Git Hub上的 FreeRDP 开源项目,在实际的编译源码的过程中,遇到了非常多的问题,故在这里记录一下这一过程。

系统环境介绍

  1. 我在 Ubuntu 18.0.4CentOS 8 上都完成了这一环境搭建,这里以 Ubuntu 18.0.4 为例。我们首先需要确保我们的 Ubuntu 是可以联网的,因为在后面的编译过程中需要用到非常多的依赖库,如果离线安装的话会非常麻烦且不一定能安装成功。

  2. 同时预先安装一下 gmakeUbuntu 系统上已经取消了 gmake,使用 make 来代替,所以我们只需要对 make 进行软链接就可以了,具体命令如下:

    cd /usr/bin
    sudo ln -s make gmake

具体步骤

  1. 进入到 /usr/local 目录下,执行下述命令下载 FreeRDP 开源项目,命令如下
    git clone git://github.com/FreeRDP/FreeRDP.git
    如果出现下载失败的情况,则根据出错原因在网络上都可以查找出相关的解决方案。

  2. 接下来就需要安装依赖库了,在FreeRDP上给出了我们需要安装的依赖库,但是其中有一些库是已经过期了的,我整理了一下,如下所示:
    sudo apt-get install ninja-build build-essential git-core debhelper cdbs dpkg-dev autotools-dev cmake pkg-config xmlto libssl-dev docbook-xsl xsltproc libxkbfile-dev libx11-dev libwayland-dev libxrandr-dev libxi-dev libxrender-dev libxext-dev libxinerama-dev libxfixes-dev libxcursor-dev libxv-dev libxdamage-dev libxtst-dev libcups2-dev libpcsclite-dev libasound2-dev libpulse-dev libjpeg-dev libgsm1-dev libusb-1.0-0-dev libudev-dev libdbus-glib-1-dev uuid-dev libxml2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libfaad-dev libfaac-dev libcunit1-dev libdirectfb-dev xmlto doxygen libxtst-dev

  3. 若下载过程中出现问题,大部分原因都是 url 不稳定导致的,网络有相关的解决方案。当依赖库安装完成后,进入到 FreeRDP 项目下,执行 cmake 命令,若期间没有报错则继续执行 makemake install 命令:
    cd FreeRDP
    sudo cmake .
    sudo make
    sudo make install
    此时就会在 usr/local/bin 目录下生成 xfreerdp 可执行文件,这时生成的 xfreerdp 是一个功能非常完善的程序,但是其中的一些功能我并不需要,为了精简,需要对其进行裁剪。

  4. 进入到 client/Sample 目录下,执行 cmake 命令生成 Makefile
    cd client/Sample
    sudo cmake .
    报了如下错误:
    在这里插入图片描述https://www.jianshu.com/p/f9f20fc91c86 解决了这个问题。

  5. 成功生成 Makefile 时,依次执行:
    sudo make
    sudo make install
    当执行 sudo make时,出现了如下错误:
    在这里插入图片描述这是没有找到 winpr 这个目录导致的,这个目录在 /usr/local/include 目录下,执行命令:cd /usr/local/include,会看到下面两个文件夹:
    在这里插入图片描述
    我们需要的是 winpr 并不是 winpr3,注意 winpr3 并不是 winpr,所以不能用改名字的方法来解决,winpr在哪里呢?就在 winpr3 目录下,我们只需要将其拷贝到 include 下就可以了,具体操作如下图所示:
    在这里插入图片描述
    然后再进入到刚开始的 Sample 目录下,执行 make 命令,
    在这里插入图片描述又报了这样的错误,错误原因和上个问题一样,不知道在 include 目录下你看到 freerdp3 这个目录下没有呢。

  6. 再次执行 make 命令,又出现了如下错误
    在这里插入图片描述cannot find -lfreerdp-client,找到不 libfreerdp.so 这个库文件(去掉 l 加上 lib,末尾加上 .so 就是本身库的名字,在 usr/local/lib 目录下有一个libfreerdp3.so 文件,
    在这里插入图片描述我们将其拷贝一下并命名为 libfreerdp.so ,命令如下:
    sudo cp libfreerdp3.so libfreerdp.so
    同时也把 libfreerdp-client3.so 拷贝并命名一下,命令如下:
    sudo cp libfreerdp-client3.so libfreerdp-client.so

    再次回到 Sample 目录下,执行 make 命令,会报如下错误:
    在这里插入图片描述提示找不到 libwinpr3.so.3 这个库,但是在 usr/local/lib 这个目录下是有这个库文件的,说明链接时并没有找到这个库文件,当时也琢磨了很长时间,最后仔细看了 CMakeList.txt 文件的内容终于找到了解决方案(注意不要去看 Makefile,因为 Makefile 是用 cmake 生成的,cmake 是根据 CMakeList.txt 文件完成编译的),解决方法如下:

    (1) vi 打开 CMakeList.txt 文件

    (2) 找到下图的位置
    在这里插入图片描述winpr3 加上去,最后如下图所示:
    在这里插入图片描述保存并退出。

  7. 再次执行 sudo make 命令,会发现可以生成最终的可执行文件了:
    在这里插入图片描述此时 FreeRDP 的编译环境就完全搭建完成了,CentOS 8 的搭建步骤与此类似,以供参考。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值