【问题标题】:Howto create software package in Unix/Linux?如何在 Unix/Linux 中创建软件包?
【发布时间】:2009-02-21 13:22:35
【问题描述】:

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

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

【问题讨论】:

    标签: c++ unix boilerplate software-packaging


    【解决方案1】:

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

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

    例如KDE 正在使用它。

    【讨论】:

      【解决方案2】:

      查看 GNU autoconf/automake 工具链。 Here's a free tutorial/book.

      【讨论】:

        【解决方案3】:

        在过去,这个过程是手工完成的。每个Makefile 都是手写的(文件make 用作一种脚本)。当涉及到可移植性时,这变得有问题,因此制作了configure 脚​​本。 ./configure 脚本也是为每个项目手工编写的。最终这由 GNU 用他们的autotools 包自动完成。这包括autoconfautomake 和其他一些。虽然存在替代方案,特别是对于make,但autotools 使用最广泛。 ...至少在 GNU/Linux 系统上。替代方案包括已经提到的CMakeBoost.BuildBoost.JamSCons 等。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

            rpmbuild 是构建 rpm 包的命令

            man page

            tutorial

            【讨论】:

            • 当我阅读链接的手册页时,它似乎没有回答我认为被问到的问题:你如何首先提供平台灵活的构建(即帮助编写 configure 和 makefile )... rpmbuild 似乎假设您有这样的东西。
            【解决方案6】:

            自动工具。

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

            Configure.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 与 nodist = 是否应该构建
            • inst vs noinst = 是否应该安装
            • DATA = 数据文件
            • MANS = 手册页
            • SOURCES = 源代码

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

            一旦你拥有这两个文件,你通常需要运行类似的东西:

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

            设置构建所需的自动工具文件。这可以放在 shell 脚本中并在运行 ./configure 之前运行。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2022-10-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-01-06
              相关资源
              最近更新 更多