一种释放C++;项目可执行文件 我用C++编写了一个简单的程序,在Ubuntu中使用CGE. < /P>

一种释放C++;项目可执行文件 我用C++编写了一个简单的程序,在Ubuntu中使用CGE. < /P>,c++,linux,cmake,executable,release,C++,Linux,Cmake,Executable,Release,该程序使用CURL、Qt和OpenCV库,因此我使用apt安装了预构建的软件包 我完成了代码编写,上传到github,现在我想将当前代码定义为版本1并发布 我最初的想法是:将程序构建为单个可执行文件,并将其作为发行版共享 但是简单地复制可执行文件(cmake的构建结果)在其他系统上似乎不起作用;由于图书馆的问题 例如,我将可执行文件复制到新安装的干净ubuntu系统中,当我执行它时,会出现共享库错误,就像libcurl一样 有没有什么巧妙的方法来发布我的程序,让用户可以直接下载并执行它 谢谢大家

该程序使用CURL、Qt和OpenCV库,因此我使用apt安装了预构建的软件包

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

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

但是简单地复制可执行文件(cmake的构建结果)在其他系统上似乎不起作用;由于图书馆的问题

例如,我将可执行文件复制到新安装的干净ubuntu系统中,当我执行它时,会出现共享库错误,就像libcurl一样

有没有什么巧妙的方法来发布我的程序,让用户可以直接下载并执行它


谢谢大家!

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

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

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

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

如果您的应用程序很好,并且是开源的,有合理的许可证,并且可以从GitHub这样的知名网站轻松获得,那么分发维护人员可能会使用它。构建发行版需要大量的编译和打包,其中大部分是自动化的。因此,对于发行版维护人员来说,添加额外的包(如果它们构建得干净的话)并不是一件大麻烦


否则,我认为最好的办法就是发布源代码,并记录其依赖关系。理想情况下,如果缺少依赖项,构建将以清晰的警告彻底失败——遗憾的是,许多Linux应用程序(包括我自己的)都没有达到这一目标。

您可以创建一个Ubuntu
.deb
包文件,其中包括一些依赖项列表,然后可以自动安装。或者静态链接。或者做几乎每个Linux应用程序都做的事情:什么都不做,只让用户下载代码并安装依赖项并自行构建。这可能会有帮助: