代码之家  ›  专栏  ›  技术社区  ›  asafd

automake-如何更改已安装二进制文件的权限

  •  0
  • asafd  · 技术社区  · 9 年前

    我有这个Makefile.am:

    AUTOMAKE_OPTIONS = subdir-objects
    sbin_PROGRAMS = foo
    foo_SOURCES = foo.c
    
    install-exec-hook:
        chmod +s $(sbindir)/foo
    

    除了目标,一切都很好 蒸馏检查 这给出了该误差:

    > make distcheck
    ...
    ...
    ...
    Making install in sub-module
    make[2]: Entering directory '/home/users/a/myproj/_build/sub-module'
    make[3]: Entering directory '/home/users/a/myproj/_build/sub-module'
     ../../install-sh -c -d '/var/folders/pp/jbr_vq091s7gd8x9scrc7drw0000gn/T//am-dc-71151//home/users/a/myproj/_inst/sbin'
        /bin/sh ../libtool   --mode=install /usr/bin/install -c foo '/var/folders/pp/jbr_vq091s7gd8x9scrc7drw0000gn/T//am-dc-71151//home/users/a/myproj/_inst/sbin'
    libtool: install: /usr/bin/install -c foo /var/folders/pp/jbr_vq091s7gd8x9scrc7drw0000gn/T//am-dc-71151//home/users/a/myproj/_inst/sbin/foo
    make  install-exec-hook
    make[4]: Entering directory '/home/users/a/myproj/_build/sub-module'
    chmod +s /home/users/a/myproj/_inst/sbin/foo
    chmod: /home/users/a/myproj/_inst/sbin/foo: No such file or directory
    Makefile:645: recipe for target 'install-exec-hook' failed
    make[4]: *** [install-exec-hook] Error 1
    

    看起来像 食品 二进制文件被复制到某个临时目录(/var/folders/pp/jbr_vq091s7gd8x9crc7drw0000gn/T//am-dc-7111//home/users/a/myproj/_inst/sbin),而不是复制到安装exec挂钩目标(/home/user/a/myproj/_inst/sbin)中查看的位置

    我错过了什么??

    1 回复  |  直到 9 年前
        1
  •  1
  •   Tom Tromey    9 年前

    你没有说你是如何配置的,也没有说你使用的确切命令 make install 。这有两个原因:

    1. Automake支持通过configure在安装时重命名文件 --program-prefix 以及相关选项;

    2. 自动生成支持设置 DESTDIR 安装时。

    所以,也许其中一个是有效果的。

    修复重命名问题有点麻烦——请参阅Autoconf文档——但要处理 目标目录 至少是简单的:

    install-exec-hook:
           chmod +s $(DESTDIR)$(sbindir)/foo
    

    注意这两个变量之间缺少目录分隔符。这是故意的。

    如果这没有帮助,那么您需要更早地进行调查,以发现这个奇怪的前缀来自何处。我不相信Automake中有任何东西可以添加它。