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

时间:2013-08-29 07:47:51

标签: linux deployment build-process

我正在构建一个可以在Linux系统上运行的应用程序。目前,构建过程包含一个已经过于复杂的简单Makefile。

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

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

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

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

所以我基本上寻找一些好的资源,让我对可能性和常规做法进行概述,并使我能够就是否以及如何调整构建和部署过程做出明智的决定。

1 个答案:

答案 0 :(得分:1)

通常在制作之前运行./configure脚本。此脚本用于检查依赖项。设置编译时切换到项目特定的更改等。 这也是设置前缀的地方,如果你没有给出前缀,通常你应该安装到/ usr / local。

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

由于手动编写完整的./configure是疯狂的,gnu autotools被广泛使用。 他们有点臃肿,一开始有些痛苦,但做得非常好。

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

我对cmake一无所知,因为我没有经验。

关于你的上一个问题:

  

这是合同工作,我真的应该关心这些事吗?该应用程序只能在定义明确的客户系统上运行,因此我可以提供包含所有必要文件的文件夹,并且可以从该文件夹中执行该应用程序。

是的,你应该关心这一点。如果更新和升级,这将简化您的生活。