如何在Unix/Linux下创建软件包?

发布于 2024-07-14 03:57:47 字数 158 浏览 16 评论 0 原文

我们如何创建一个软件包,以便 解压我们的软件 tar 球后,用户可以执行以下操作 典型的步骤?

$ gunzip < mycode.tar.gz | tar xvf -
$ ./configure
$ make
$ make install

How can we create a software package, so that
after extracting our software tar ball user can do
the typical steps?

$ gunzip < mycode.tar.gz | tar xvf -
$ ./configure
$ make
$ make install

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

怎会甘心 2024-07-21 03:57:47

CMake 是难以理解的 GNU/Autools 的替代方案。

http://www.cmake.org/cmake/help/examples.html

例如 KDE 正在使用它。

An alternative to the hard to understand GNU/Autools is CMake.

http://www.cmake.org/cmake/help/examples.html

e.g. KDE is using it.

痴意少年 2024-07-21 03:57:47

查看 GNU autoconf/automake 工具链。 这是一本免费的教程/书籍。

Look into the GNU autoconf/automake toolchain. Here's a free tutorial/book.

π浅易 2024-07-21 03:57:47

在过去,这个过程是手工完成的。 每个 Makefile 都是手工编写的(文件 make 用作一种脚本)。 当涉及到可移植性时,这就成为了问题,因此创建了 configure 脚本。 ./configure 脚本也是为每个项目手工编写的。 最终,GNU 通过其 autotools 包将其自动化。 它由 autoconfautomake 和其他一些组成。 虽然存在替代方案,特别是 make,但 autotools 使用最为广泛。 ...至少在 GNU/Linux 系统上是这样。 替代方案包括已经提到的 CMakeBoost.Build, Boost.Jam, SCons 等。

In the old days, this process was done by hand. Each Makefile was written by hand (the file make uses as a sort of script). This became problematic when it came to portability, and so the configure script was made. The ./configure script was written by hand for each project as well. Eventually this was automated by GNU with their autotools package. This consists of autoconf, automake, and a few others. While alternatives exist, particularly for make, autotools is most widely used. ...At least on GNU/Linux systems. Alternatives include the already mentioned CMake, Boost.Build, Boost.Jam, SCons, and more.

凯凯我们等你回来 2024-07-21 03:57:47

使用自动工具创建配置脚本(它将生成最后两个步骤所需的 Makefile),然后制作一个包含所有代码和内容的 tarball。

Use autotools to create the configure script (which will generate the Makefile necessary for the last two steps), then make a tarball with all your code and stuff in it.

臻嫒无言 2024-07-21 03:57:47

rpmbuild 是构建 rpm 包的命令

手册页

教程

rpmbuild is a command to build rpm packages

man page

tutorial

剑心龙吟 2024-07-21 03:57:47

自动工具。

您需要编写一个configure.ac 和一个Makefile.am 脚本。

配置.ac 非常简单,并且可以通过在源代码上运行“自动扫描”来自动生成。 这将生成一个“configure.scan”文件,您需要对其进行调整以生成最终的configure.ac 文件。

Automake.am 文件完全基于约定。 你可能需要这样的东西:

AUTOMAKE_OPTIONS = foreign subdir-objects
AM_CXXFLAGS = -std=c++11 -static-libstdc++ -Wall -Werror \
    -Wfatal-errors -I blah
AM_LDFLAGS = blah

bin_PROGRAMS = mybinary
mybinary_SOURCES = \
    blah.h blah.cc

一切都基于命名模式:

  • dist vs nodist = 应该构建
  • inst vs noinst = 应该安装
  • DATA = 数据文件
  • MANS = 手册页
  • SOURCES = 源代码

,所以 dist_noinst_DATA 用于数据文件构建所需但未安装。

一旦您拥有这两个文件,您通常需要运行以下命令:

aclocal && 自动标题&& automake --add-missing && autoconf

设置构建所需的 autotools 文件。 可以将其放入 shell 脚本中并在运行 ./configure 之前运行。

Autotools.

You'll need to write a configure.ac and a Makefile.am scripts.

Configure.ac is pretty easy and can be mostly autogenerated from running 'autoscan' on your source code. That will generate a 'configure.scan' file that you'll need to tweak to generate the final configure.ac file.

The Automake.am file is all based off of conventions. You'll probably need something like:

AUTOMAKE_OPTIONS = foreign subdir-objects
AM_CXXFLAGS = -std=c++11 -static-libstdc++ -Wall -Werror \
    -Wfatal-errors -I blah
AM_LDFLAGS = blah

bin_PROGRAMS = mybinary
mybinary_SOURCES = \
    blah.h blah.cc

everything is based on a naming schema:

  • dist vs nodist = should it be built
  • inst vs noinst = should it be installed
  • DATA = data files
  • MANS = man pages
  • SOURCES = source code

so dist_noinst_DATA is for data files required for building but are not installed.

Once you have both of those files you usually need to run something like:

aclocal && autoheader && automake --add-missing && autoconf

to setup autotools files required for building. This can be put in a shell script and run prior to running ./configure.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文