【问题标题】:Automake: different install to target and to toolchainAutomake:针对目标和工具链的不同安装
【发布时间】:2012-07-05 00:17:08
【问题描述】:

也许我在问一个愚蠢的问题,但是当我执行“make dist”而不是执行“make install”时,有什么办法可以告诉 automake 将我的项目包含文件放入?

也许我的行为方式不对,所以为了更清楚,我会告诉我我需要什么。

  1. 我需要在嵌入式板上部署我的应用程序,并在脚本中使用“make install”来创建可以复制到目标板的包。

  2. 另一方面,我希望能够使用我的库和包含文件来更新我的工具链。

在第一种情况下,我不能浪费我有限的闪存,而只是让应用程序运行所必需的东西。

在第二个中,我需要头文件、pkgconfig 和开发所需的所有东西。

我应该如何配置我的“Makefile.am”以及需要哪些规则才能实现我的目标?

非常感谢。

【问题讨论】:

    标签: makefile installation embedded autoconf automake


    【解决方案1】:

    我只是希望能够设置给定脚本的 SUID,其他数据文件 R/W 任意权限等等。

    我认为添加 $(DESTDIR) 的 makefile 用户变量可以做到这一点。 由于它不是由 automake 定义的,“make install”使用它为空, 但是 dpkg-buildpackage 用“make dist”目标定义它。

    (见:http://www.gnu.org/prep/standards/html_node/DESTDIR.html#DESTDIR

    它帮助我管理 setuid 安装:

    configure.ac

    # Add option to disable setuid during install, use in distcheck
    AC_ARG_ENABLE(setuid-install, 
     AS_HELP_STRING(
     [--disable-setuid-install       do not set setuid flags during install]), 
     [enable_setuid_install=$enableval], [enable_setuid_install="yes"])
    AM_CONDITIONAL(SETUID_INSTALL, test x"$enable_setuid_install" = "xyes")
    

    Makefile.am

    if SETUID_INSTALL
    install-data-hook:
            /bin/chmod 4755 $(DESTDIR)$(bindir)myBinary
    endif
    

    【讨论】:

      【解决方案2】:

      我不认为autoconf 真的被设计成一个通用的安装程序/卸载程序,它会给你那种控制而至少没有一些痛苦。您正在寻找类似dpkg-buildpackagerpmbuild 的东西,您可以将make install 的输出拆分为特定的子包,以便您拥有:

      • foo 用于嵌入式板和可能的工具链,具体取决于包中的内容(DSO、可执行文件和运行时所需的其他文件)
      • 为工具链(头文件、静态库、开发所需的其他文件)打包 foo-devfoo-devel

      【讨论】:

      • 事实上并非如此。我的需要很容易证明这样的事情是合理的。我只是希望能够设置给定的脚本 SUID、其他数据文件 R/W 任意权限等等。我理解你所说的,并且倾向于同意没有提供我需要的东西,但我仍然希望有一种更干净的方式,而不是“完成后上钩”。真的很感谢。
      • 但是在#1中你说你已经在创建“一个包”。我只是建议您使用专为打包而设计的工具。这些工具还设置文件权限等。如果它真的比我想象的更简单,您可以根据需要运行的时间查看自动安装钩子“install-data-local”或“install-data-hook”。
      • 我明白你说的。不过,我的观点是,当我使用“钩子”时,我首先 做错了 以便稍后修复,这对我来说似乎不明智,所以我想知道这是否有任何方法 一开始就做对了。从你所说的和我在网上发现的情况来看,这似乎是不可能的,我必须接受“-hook-”或任何其他稍后修复解决方法。我现在清楚了吗?再次感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-03
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      相关资源
      最近更新 更多