2017-10-13 19 views
2

OS X에서 힘내를 빌드하려고합니다. Git은 libidn2에 의존합니다. libidn2 2.0.0은 실패Makefile에서 'ar'이 어디에서 호출되는지 확인하는 방법은 무엇입니까?

make all-am 
make[3]: Entering directory '/Users/jwalton/Build-Scripts/libidn2-2.0.0/lib' 
    CC  idna.lo 
    CC  lookup.lo 
    CC  decode.lo 
    CC  register.lo 
    CC  bidi.lo 
    CC  version.lo 
    CC  error.lo 
    CC  punycode.lo 
    CC  free.lo 
    CC  data.lo 
    CC  tr46map.lo 
    CC  tables.lo 
    CC  context.lo 
    CCLD  libidn2.la 
warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm: no name list 
warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm: no name list 
copying selected object files to avoid basename conflicts... 
ar: temporary file: No such file or directory 
Makefile:1027: recipe for target 'libidn2.la' failed 
make[3]: *** [libidn2.la] Error 1 
make[3]: Leaving directory '/Users/jwalton/Build-Scripts/libidn2-2.0.0/lib' 
Makefile:955: recipe for target 'all' failed 
make[2]: *** [all] Error 2 
make[2]: Leaving directory '/Users/jwalton/Build-Scripts/libidn2-2.0.0/lib' 
Makefile:1065: recipe for target 'all-recursive' failed 
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory '/Users/jwalton/Build-Scripts/libidn2-2.0.0' 
Makefile:974: recipe for target 'all' failed 
make: *** [all] Error 2 

libidn2를 구축하는 내 조리법 모든 메이크를 발견하고 ARARFLAGS 해결

if [[ "$IS_DARWIN" -ne "0" ]]; then 
    for mfile in $(find "$PWD" -name 'Makefile'); do 
     echo "Fixing Makefile $mfile" 
     sed -i "" 's|AR = ar|AR = /usr/bin/libtool|g' "$mfile" 
     sed -i "" 's|ARFLAGS = cr|ARFLAGS = -static -o|g' "$mfile" 
    done 
fi 

내가 확인했습니다 그것을 수정하는 모든 메이크를 :

$ find $PWD -name Makefile -exec grep 'AR =' {} \; | egrep -iv 'amtar|char' 
AR = /usr/bin/libtool 
ac_ct_AR = /usr/bin/libtool 
AR = /usr/bin/libtool 
ac_ct_AR = /usr/bin/libtool 
AR = /usr/bin/libtool 
ac_ct_AR = /usr/bin/libtool 
AR = /usr/bin/libtool 
ac_ct_AR = /usr/bin/libtool 
AR = /usr/bin/libtool 
ac_ct_AR = /usr/bin/libtool 
AR = /usr/bin/libtool 
ac_ct_AR = /usr/bin/libtool 
AR = /usr/bin/libtool 
ac_ct_AR = /usr/bin/libtool 
AR = /usr/bin/libtool 
ac_ct_AR = /usr/bin/libtool 
AR = /usr/bin/libtool 
ac_ct_AR = /usr/bin/libtool 

AR="/usr/bin/libtool" ARFLAGS="-static -o" ./configuremake AR="/usr/bin/libtool" ARFLAGS="-static -o"도 시도했지만 선택 사항은 적용되지 않습니다. 추가로 실패한 빌드가 생성됩니다.

Makefile 디버깅 지원은 매우 진절머리하기 때문에 진행 방법을 모르겠습니다. make -d은 파일 이름과 줄 번호를 제공하는 것과 같은 가장 단순한 작업조차도 실패합니다. remake -d은 도움이되지 않는 동일한 결과를 산출합니다. 다른 사람이 작성한 대규모 프로젝트는 상황을 악화시킵니다.

libidn2.la: $(libidn2_la_OBJECTS) $(libidn2_la_DEPENDENCIES) $(EXTRA_libidn2_la\ 
_DEPENDENCIES) 
     $(AM_V_CCLD)$(libidn2_la_LINK) -rpath $(libdir) $(libidn2_la_OBJECTS) $\ 
(libidn2_la_LIBADD) $(LIBS) 

은 어떻게 찾을 수 arMakefiles의 컬렉션에 호출되고 :

$ make -d 
... 
Putting child 0x7f9bf0c45cf0 (libidn2.la) PID 75531 on the chain. 
Live child 0x7f9bf0c45cf0 (libidn2.la) PID 75531 
    CCLD  libidn2.la 
warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm: no name list 
warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm: no name list 
copying selected object files to avoid basename conflicts... 
ar: temporary file: No such file or directory 
Reaping losing child 0x7f9bf0c45cf0 PID 75531 
Makefile:1027: recipe for target 'libidn2.la' failed 

여기 ar에 대한 호출하지 라인 1027,입니까? 당신이 할 수있는 실패하는 조리법의 간단한 이해를

+2

는 [이 annswer은] (https://stackoverflow.com/a/5820432/425738) 도움이 될 수 있습니다 도움이 될 수 있습니다 메이크 옵션의 사용 - 기본적으로 추가'V을 = 1 ...' – ldav1s

답변

-1

:

  1. 규칙을 에코 (예 : 에코 $ (AM_V_CCLD) $ (libidn2_la_LINK) ...)
  2. 가 중지하는 데 실패 두 번째 명령을 추가 make

추가 도움이 필요하면이 변경 후에 make 출력을보고하십시오. 귀하의 경우에는

--debug = m가

+0

질문의 요점은 OP가 어떤 규칙이 오류를 일으키는 지 알지 못한다는 것입니다. 그래서 규칙을 수정하라는 제안은 어떻게 도움이됩니까? 또한'-d' 옵션 (위 참조)은'--debug = m' 옵션을 다루고 있습니다. – Beta

+0

질문에 설명 된대로 오류 메시지가 레시피와 정확히 일치합니다. "Makefile : 1027 : 'libidn2.la'대상에 대한 레시피가 생성되지 않았습니다." make 옵션 -d는 --debug = gmake 문서의 105 페이지에서 설명한대로 --debug = m을 다루지는 않습니다 : [link] (https://www.gnu.org/software/make/manual/make.pdf) –

+0

명백하지 않습니다 - 나에게, 어쨌든 - OP가 올바른 makefile을보고 있지만, 리플렉션에서 echo 명령을 사용하면이를 확인할 수 있습니다. 그리고 귀하의 링크에 따르면, "all '옵션 [--debug = a]가이 옵션 [--debug = m]을 가능하게합니다." – Beta