如何在 Linux 中生成一个可以通过单击运行的文件?

如何在 Linux 中生成一个可以通过单击运行的文件?

作为一名开发人员,我如何才能轻松地将软件打包并交付给 Linux 用户?

涉及到

  1. 电脑(台式机)
  2. 非法强制专卖店和勇敢的另类商店
  3. 从废弃的源代码编译,你是你自己的用户,这不是一个产品。

与已发布的产品相关。

不是与......有关

a) 命令行

b) 生成文件

c) 构建脚本

d) 来源

e) 线上或线下项目

我想了解主要的 Linux 操作系统发行版是否能够实现以前在所有操作系统上都可以实现的功能。

例子:

I.下载可执行文件,点击运行。

二.下载压缩包,解压到一个文件夹,点击其中的一个文件即可运行软件

三.不再举例了。这就是问题所在。

指定的目标平台:

1.1 操作系统平台目标

1.2 GUI(如果未包含在操作系统平台目标中)

1.3 1.1或1.2提供的框架。

简而言之:想象一下一个认真的开发人员。如何在 Linux 上交付软件产品?下载链接,点击,运行。

(我来自企业环境,所以我在这个论坛上还没有创建“可交付”标签的声誉。)

请注意,形式这里不对可交付成果提出质疑。例子可能非常简单:

A. 在默认显示器上画一个矩形

B. 打开一个窗口,不做任何其他事情。

C. 打开一个文件到标准文件输出,向其中写入字符,然后关闭它。

答案1

根据评论中的澄清重新表述问题。

Linux 中的二进制可执行文件是什么?

这是一个极低频文件与执行位设置。二进制代码和对共享库的引用存储在文件中,因此最终链接在操作系统启动可执行文件时完成(类似于 Mac OS 上的框架或 Windows 上的 DLL)。如果您担心最后一步引入依赖项,请查看糟糕的项目出于这些原因,它促进了静态链接。

如何创建二进制可执行文件?

在 'Nix 传统中,您用 C 语言编写程序,并使用cc(“编译 C”或“C 编译器”,任一都有效)命令。这将编译并链接您的 C 代码,以生成一个 ELF 文件,其中包含适用于您正在运行的架构的二进制代码。当使用多个源文件时,有许多不同的工具可以管理此过程,从命令行make到 GUI IDE。编译器和解释器可用于多种编程语言,因此您不仅限于 C。

想象一下一个认真的开发人员。如何在 Linux 上交付软件产品?下载链接,点击,运行。

因为 Linux 运行在一系列处理器架构上,并且没有一个“FAT”二进制标准,这是不可能的。下载适合其 CPU 的可执行文件后,用户可能必须手动设置执行位(通过命令行很容易完成,但通过 GUI 则更具挑战性)。最终用户系统上的内容取决于发行版、安装过程中使用的安装选项以及用户安装后安装的软件包 - 大多数发行版使用包管理器在解决依赖关系的同时安装附加软件。虽然 Mac OS 和 Windows 各有一个桌面环境,GNU/Linux 有很多(或者可能没有安装);除了美观的变化之外,每个都可能遵循不同的界面标准(例如模拟 Windows 的快捷键),并且每个都可能在不同程度上依赖于命令行。

也就是说,您可能对 Canonical 等项目感兴趣快照商店,它和 Ubuntu 本身一样,似乎试图吸引那些可能属于“产品消费者”类别的用户以及更多技术人员。

您的问题中的一些事情可以得到澄清:

通过将您的注意力集中在“台式”计算机上,我假设您并不是要排除笔记本电脑,而是对“个人计算机”或“工作站”感兴趣,而不是对 Linux 很常见的服务器或嵌入式系统感兴趣。

我不知道你所说的“非法强制垄断”或“勇敢的替代”商店是什么意思,但如果你的担忧具有法律性质,你可以尝试 Stack Exchange 的法律网站

我的解释是,您的大部分问题是将注意力集中在以二进制形式交付软件上,而不是引入不同的关注点。

该声明我想了解主要的 Linux 操作系统发行版是否能够实现以前在所有操作系统上都可以实现的功能不清楚;多年来,不同的操作系统具有截然不同的功能。

来自“企业环境”不应影响您在本网站上的声誉评分;尽管追踪可以用来识别用户并采取可能影响分数的行动,但我没有看到任何证据,我什至不知道有任何说法正在发生。

您问题末尾列表中包含的每个功能都可以由软件以二进制形式提供,但需要注意的是,用户可能没有运行兼容的环境 - 例如,您的软件可能无法在控制台上打开窗口仅安装。

答案2

无视一切政治的考虑/咆哮你的问题的这一部分以及你的一些评论。


作为一名开发人员,我如何才能轻松地将软件打包并交付给 Linux 用户?

您与发行版开发人员取得联系并说服他们将您的软件包含到他们的存储库中。
为什么 ?因为绝大多数 Linux 用户不会安装其发行版支持的包管理器之外的任何软件。

时期!

附加说明以下评论:

Linux 当然可以愉快地运行任何可执行代码,而不会留下任何未解析的外部引用。
换句话说,如果你的 C 代码使用打印函数或者任何函数,您必须提供 printf 或任何函数的代码作为代码的一部分,或者静态链接为这些函数提供代码的库。

与您提到的 1980 年代相比,没有任何变化。

你可以很容易地设计(我不会说任何关于分发的事情,因为我只是不知道所有这些可能的许可证)无论如何独立的静态链接一些 libc libm 和 libcurses 的半图形应用程序。

当您的应用程序无法……独立时,当然就会出现大问题。那时您会希望您的应用程序成为任何服务器的客户端。

你提到打开一扇窗户……? (希望尊重所有其他 Windows 用户会打开的内容)您需要的不是任何 X 服务器的帮助,而是当前在用户系统上运行的 X 服务器的帮助。

当然,您可以静态链接关联的客户端库。但是您能确定用户将在哪个服务器上运行哪个版本吗?

如果没有的话...您将必须静态链接所有可能的 X / 数据库/...服务器的所有客户端库(所有可能的受支持版本)...

无论什么普通用户都一定会抱怨内存浪费,因为……适当的客户端库已经作为共享库加载到内存中。

所以不行 !事情从一开始就没有改变。除了……可能是……你的期望。 :-P

相关内容