-1

我正在用 C++ 编写一个简单的程序,在 Ubuntu 中使用 CLion 和 cmake。

该程序使用 CURL、Qt 和 OpenCV 库,所以我使用 apt 安装了预构建的包。

我写完代码,上传到 github,现在我想将当前代码定义为版本 1 并发布。

我最初的想法是:将程序构建为单个可执行文件并将其作为发行版共享。

但是单纯的复制可执行文件,cmake的构建结果,在其他系统上好像不行;由于图书馆问题。

比如我把可执行文件复制到新安装的-clean ubuntu系统中,执行时出现共享库错误,和libcurl一样。

是否有任何巧妙的方法来发布我的程序,使用户可以下载并执行它?

谢谢!

4

1 回答 1

0

如果您想发布适用于 Linux 的可执行文件,您可能会承担大量工作。不仅不同的 Linux 发行版处理打包和依赖管理的方式不同,甚至在同一发行版的不同版本中也可能存在不一致。

除非您有一个团队与您一起工作,或者您有时间,否则即使是一个发行版也很难支持。每次有新版本发布时,即使是次要版本,您都必须重新构建、重新测试和重新打包。

大多数 Linux 发行版都有简化打包的工具,并且可以生成带有嵌入依赖信息的包,这使用户的生活更轻松。但是您仍然面临着持续的维护负担。

或者,您可以采用一些大型 Linux 项目采用的方法,并发布静态链接的二进制文件。这通常会产生巨大的可执行文件,但它仍然不是万无一失的。

如果您的应用程序很好,并且它是具有合理许可的开源应用程序,并且可以从 GitHub 等知名地方轻松获得,那么它可能会被分发维护者拾取。构建一个发行版需要大量的编译和打包,其中大部分是自动化的。所以添加额外的包,如果它们构建干净,对于发行版维护者来说并不是一个巨大的麻烦。

否则,我认为你最好的选择就是发布源代码,并记录它的依赖关系。理想情况下,如果缺少依赖项,构建将完全失败并发出明确的警告——遗憾的是,许多 Linux 应用程序(包括我自己的)都达不到这个目标。

于 2020-09-21T19:45:21.377 回答