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



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

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

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

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

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

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

您通常有一个/将脚本配置为在制作之前运行。此脚本用于检查相关性。设置编译时切换到项目特定的更改,等等。这也是设置前缀的地方,如果不提供前缀,通常应该安装到/usr/local。

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

因为写一个完整的是疯狂的/手动配置,gnu自动工具被广泛使用。他们一开始有点臃肿,有点痛苦,但做得很好。

你可以看一些教程,比如:http://markuskimius.wikidot.com/programming:tut:autotools/

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

关于您的最后一个问题:

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

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

最新更新