linux - 开发和部署 Linux 应用程序的基础知识

标签 linux deployment build-process

我正在构建一个将在 Linux 系统上运行的应用程序。目前,构建过程由一个已经过于复杂的简单 Makefile 组成。

现在我想我缺少一些关于如何正确开发 Linux 应用程序的基本知识。我查到的信息是:

  • 应用程序应该有一个 make install 目标,可以将所有文件移动到正确的位置。
  • 安装应用程序的通常位置是 /usr/bin/usr/local/bin
  • 数据文件应分别放在/usr/share/usr/local/share。应该能够在构建过程中的某处配置路径前缀。

有了这些信息,我现在想知道:

  • 如何正确配置前缀:构建过程是否应该将路径作为参数并将其硬编码到代码中?这对于测试也很重要——我应该能够以某种方式创建一个可运行的二进制文件,它只使用源文件夹中的数据文件,而不需要将所有东西都安装在某个地方。
  • 我应该使用 autotools 还是 cmake 之类的? autotools 至少似乎不仅仅是一个构建系统,而且还处理前缀配置等。它是否正确? cmake 比较如何?
  • 这是契约(Contract)工,我真的应该关心这些事情吗?该应用程序将仅在定义明确的客户系统上运行,因此我可以提供一个包含所有必要文件的文件夹,然后可以从该文件夹中执行该应用程序。

因此,我基本上是在寻找一些好的资源,这些资源可以让我概述各种可能性和常见做法,并使我能够就是否以及如何调整构建和部署过程做出明智的决定。

最佳答案

在制作之前,您通常需要运行 ./configure 脚本。该脚本用于检查依赖关系。将编译时间开关设置为项目特定更改等。 这也是设置前缀的地方,如果你不给前缀,通常你应该安装到/usr/local。

如果您稍后为某些发行版创建包(*.rpm、*.deb ...),您通常会使用/usr/作为前缀。

由于手动编写完整的 ./configure 是疯狂的,gnu autotools 被广泛使用。 它们在开始时有点肿胀和疼痛,但做得非常好。

您可以查看一些教程,例如:http://markuskimius.wikidot.com/programming:tut:autotools/

我对 cmake 一无所知,因为我没有这方面的经验。

关于你的最后一个问题:

This is contract work, should I really care about these things? The application will only run on the customer's systems which are well-defined, so I could get away with supplying a folder that contains all necessary files, and the application could be executed from within that folder.

是的,你应该关心这个。在更新和升级的情况下,这将简化您的生活。

关于linux - 开发和部署 Linux 应用程序的基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18505078/

相关文章:

xml - 使用 XMLlint 对空 XML 标签进行无效格式化

ruby-on-rails - Capistrano 部署问题

java - Maven 无法解析类

grails - 在NB上运行时出现Grails错误

php - 构建脚本是否在继续之前等待命令行任务完成?

用于检查所需的最低 Linux 内核版本的 Linux makefile

c - 如何测量 beaglebone black 上的 TCP/IP 吞吐量?

php - UTF-8贯穿始终

ant - Apache Ant : turn off output for a specific task

xcode - 有没有办法避免手动运行 `pod install` 而不是同时提交 Pods 目录?