c++ - 在 Linux 上自行分发专有软件?

标签 c++ linux

<分区>

Possible Duplicate:
What’s the best way to distribute a binary application for Linux?

我们想在 Linux 中发布专有游戏。游戏比较简单,有一个用C++编写的自定义引擎。我们一直在 Windows 上使用 MinGW 编译器,一个人在 Linux 上使用 g++ 编译器进行编程和测试。

该游戏完全使用跨平台的开源库编写。

推荐什么方法可以让 Linux 程序在所有 Linux 发行版上工作而不需要对任何发行版进行打包?对我来说,理想的方法是将其打包为 .zip 或 tarball 并提供下载,就像 Windows 下与系统库一起使用的好 ol' .exe 文件一样。

我在 Linux 下玩过的大多数提供此类下载的游戏都提供了启动它的 shell 脚本(这本身就是一个兼容性问题!)。我对此没有问题,但它散发着用户不友好的味道。此外,许多游戏需要额外的库。例如,SDL 2.0,流行库的硬件加速新版本,在大多数发行版的存储库中尚不可用,但已知有几个游戏使用它,我必须自己编译它。这更糟。

我想要一个解决方案,客户可以在他们选择的文件管理器中单击二进制文件,它会运行,不需要“apt-getting”或“yumming”必要的库。我不介意违反标准,如果它必须进入/opt,它会的。

最佳答案

I would like a solution whereby a customer can click on the binary file in their file manager of choice, and it would run, no 'apt-getting' or 'yumming'. I don't mind breaking standards, and if it has to go in /opt, it will.

首先,你必须明白“yumming”和“apt-getting”并不是真正的应用程序(包)的实际安装程序,它们只是用于查找/下载/更新/跟踪的前端程序存储库上的包(来自发行版和您手动添加的其他包)。所以,当你说“不要‘apt-getting’或‘yumming’”时,我们必须假设你的意思是你不想把你的游戏放在存储库上,如果你想让人们付钱给获取您的游戏(相对于其他专有但免费的软件,如闪存、图形驱动程序、视频编解码器和您通常在存储库中找到的其他东西)。

所以,实际上只有两种类型的包管理系统,RPM 和 DEB,它们分别使用命令行程序 rpmdpkg,实际上进行安装。大多数发行版也为这些程序提供了 GUI 前端(不是 Synaptic 风格的包管理软件(它是 apt-get 或 yum 的 GUI 前端),而是更简单的东西)。当您双击 .deb.rpm 文件时,在大多数发行版中,您会弹出此 GUI 前端,询问您管理员凭据并告诉您关于所需的依赖项,显然,您将要将此软件包安装到您的系统上。据我所知,这正是您想要的。因此,您需要为 32 位和 64 位版本提供一个 .deb 文件(对于 Debian 发行版)和一个 .rpm(对于 Red Hat 发行版)您的游戏,就像我假设您为您的 Windows 版本提供一个 .msi 文件一样。

至于用户可能难以定位的依赖项。您应该做的是在安装程序的某个目录中包含一些额外的(“推荐”版本)包,用于这些深奥的依赖项,以便在无法从发行版的存储库中获取更新版本时,可以从这些离线包中安装它们。仅此而已。

你可以让人们付费获得游戏的 deb 或 rpm 安装程序,或者包括某种许可证 key 系统来解锁游戏(因此,使 deb/rpm 文件可供下载,并收费用于解锁它的 key /代码)。

The ideal way for me would be to package it as a .zip or tarball and provide that a download, just like good ol' .exe files under Windows that work with system libraries.

理想?真的吗!?!是的,如果您所做的只是使用系统库,那么它就可以工作。但如果还有更多,那将是一场噩梦(几乎和不依赖安装程序的 Windows 下一样糟糕)。

The game is written exclusively using open source libraries, which are all cross-platform.

确保这些开源库都不是 GPL 许可的,因为如果是这样,您就无法让您的游戏专有。您的依赖项必须根据 LGPL 或 BSD 或类似许可获得许可,因此请注意这一点。

关于c++ - 在 Linux 上自行分发专有软件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14307867/

相关文章:

C++ 多态性与dynamic_cast和typeid

Linux ACPI 配置

linux - 通过保存虚拟设备删除 genymotion

linux - 如何在overlayfs中使用多个低层

c++ - 当试图找到 '*' 程序发现 '.' insted in c++

c++ - Android NDK C++ 代码的内存调试工具

c++ - 语法错误 : Identifier 'string' error C2061

pdf - 在 Linux 服务器上使用 wkhtmltopdf 创建 PDF

python - 在 Raspberry Pi 2 中通过 cron 执行包含 GPIO 命令的 python 脚本

c++ - Caffe Euclidean 图像损失计算