在不同的基于 Linux 的操作系统中构建

在不同的基于 Linux 的操作系统中构建

我对 C、qt 和 cmake 没有经验。

我花了最后 10 个小时尝试构建这个项目: https://github.com/moonlight-stream/moonlight-qt

我的主要目标是自己构建它并在 Ubuntu 上运行它。

自述文件描述了为了构建我需要安装所有这些库:

openssl-devel qt5-devel SDL2-devel ffmpeg-devel qt5-qtquickcontrols2-devel libva-devel libvdpau-devel opus-devel pulseaudio-libs-devel alsa-lib-devel SDL2_ttf-devel

我试图在 Ubuntu 上构建它,但我发现这些库无法通过简单的“apt”命令安装。我尝试使用 ubuntu 的库,但是(例如)在安装“libssl-dev”之后,cmake 安装了最新的 Fedora,然后使用 yum 安装了库并成功构建了项目。

之后,我将二进制文件复制到我的Ubuntu系统中,但无法运行它。我的 Ubuntu 上缺少很多共享库。另外,我的 Ubuntu 的 qt 版本比在 Fedora 上构建时使用的版本要旧。

从 github“releases”选项卡下载的 Ubuntu 编译版本运行良好。

因为我不知道具体如何解决我的问题,所以我有3个问题:

  1. 在 Fedora 下构建并在 Ubuntu 下运行有意义吗?
  2. 我可以以某种方式强制“make”命令将所有这些共享库和 qt 相关库包含到项目中吗?
  3. 如果没有,也许我可以在 Ubuntu 上安装 yum,然后我可以轻松安装推荐的库?

答案1

  1. 在 Fedora 下构建并在 Ubuntu 下运行是否有意义?

不,不要尝试。至少不是那样的。你可以有时避免在“姐妹”发行版之间迁移(例如:Debian、Ubuntu 和 Mint 之间,或者 CentOS、Fedora 和 RHEL 之间)。但是,当跨越主要分支时,您几乎总是会遇到所见过的问题,例如库版本不匹配。

  1. 我可以以某种方式强制“make”命令将所有这些共享库和 qt 相关库包含到项目中吗?

实际上可以手动复制所有共享库并使用它们。唯一的挑战可能是它们之间的内核不同。 但我不推荐这样做。 你不会要求make这样做。找到.so该项目的可执行文件或构建的文件,并检查它需要使用哪些库ldd。您需要将它们放在一个目录中并设置LD_LIBRARY_PATH跑步前。同样,这也是不可取的。

  1. 如果没有,也许我可以在 Ubuntu 上安装 yum,然后我可以轻松安装推荐的库?

这是一个更糟糕的想法。我不愿意去想这两个系统会如何争斗并搞砸你的操作系统。


您的最佳选择:在 Ubuntu 上进行构建

如果确实无法构建,请在 github 上提出问题。

这些软件包很可能存在于 Ubuntu 中,但您可能需要调查软件包的名称,因为它们在 Ubuntu 和 Fedora 中有所不同。例如libssl 开发

首先搜索名称中可能会成功的最小部分...例如:

apt-cache search libssl

  cl-plus-ssl - Common Lisp interface to OpenSSL
  dcmtk - OFFIS DICOM toolkit command line utilities
  libdcmtk-dev - OFFIS DICOM toolkit development libraries and headers
  libdcmtk14 - OFFIS DICOM toolkit runtime libraries
  dlang-openssl - D version of the C headers for openssl
  libssl-ocaml - OCaml bindings for OpenSSL (runtime)
  libssl-ocaml-dev - OCaml bindings for OpenSSL
* libssl-dev - Secure Sockets Layer toolkit - development files
  libssl-doc - Secure Sockets Layer toolkit - development documentation
  libssl1.1 - Secure Sockets Layer toolkit - shared libraries
  perl-openssl-defaults - version compatibility baseline for Perl OpenSSL packages
  r-cran-openssl - GNU R toolkit for encryption, signatures and certificates based on OpenSSL
  libssl-utils-clojure - library for SSL certificate management on the JVM

相关内容