2015-01-28 3 views
0

내가 가진이 Makefile.am에 권한을 변경하는 방법 :automake에 - 설치된 바이너리

AUTOMAKE_OPTIONS = subdir-objects 
sbin_PROGRAMS = foo 
foo_SOURCES = foo.c 

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

모든이 오류 제공 대상 distcheck를 제외하고 잘 작동 :

> 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 

그것을 foo 바이너리가 임시 디렉토리 (/ var/folders/pp/jbr_vq091s7gd8x9scrc7drw0000gn/T // am-dc-71151 // home/users/a/myproj/_inst/sbin)에 복사되고 install-exec에서 보았습니다. -hook 대상 (/ home/users/a/myproj/_inst/sbin)

무엇이 누락 되었습니까 ??

답변

1

make install에 대해 사용한 구성 또는 정확한 명령을 말하지 않았습니다. 이 두 가지 이유로 중요 :

  1. Automake가이 구성의 --program-prefix 및 관련 옵션을 통해 설치시 파일 이름 바꾸기 지원;

  2. Automake는 설치시 DESTDIR 설정을 지원합니다.

아마도이 중 하나가 효과가있을 수 있습니다. Autoconf의 설명서를 참조 - - 이름 바꾸기 문제를 해결

관련된 약간이지만 DESTDIR 다루는 것은 적어도 간단하다 :

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

주 두 변수 사이의 디렉토리 분리의 부족. 그것은 의도적 인 것입니다.

이것이 도움이되지 않으면 이전에 조사하여 이상한 접두사의 출처를 찾아야합니다. 나는 그것을 추가 할 어떤 것이 Automake에 있다고 생각하지 않는다.

+0

실제로 내 흐름은 매우 직선입니다. > env LIBTOOLIZE = glibtoolize autoreconf --install | > ./configure > make > make distcheck 그래서, 나는 목적지 목적지가 어디에서 왔는지 정말로 알지 못합니다. 어쨌든 당신의 솔루션이 도움이되었습니다. $ (DESTDIR)를 추가하면 문제가 해결되었습니다. – asafd