0

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

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

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

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

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

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

4

1 回答 1

1

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

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

由于手动编写完整的 ./configure 是很疯狂的,因此 gnu 自动工具被广泛使用。他们在开始时有点臃肿和有些痛苦,但做得非常好。

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

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

关于你的最后一个问题:

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

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

于 2013-08-29T07:56:48.393 回答