UFO ET IT

OSX Command Line Tools 6.3 업데이트 후 C ++ 헤더 <__ debug> 누락

ufoet 2020. 11. 14. 11:23
반응형

OSX Command Line Tools 6.3 업데이트 후 C ++ 헤더 <__ debug> 누락


App Store에서 Command Line Tools 6.3으로 업데이트 한 후 <__ debug>를 포함 <vector>하거나 <iterator>내부적으로 포함하는 프로그램 은 다음과 같이 파일을 찾을 수 없음 오류를 발생시킵니다. cpp는 흥미롭지 않지만 포함 된 헤더 중 하나에 포함됩니다.

c++ -O3 -I/Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers -L/Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/build/binaries/clusterStaticLibrary /Users/farleylai/Documents/dev/git/ESMS/Optimizer/build/StreamIt/FIR/511/512/combined_threads.cpp -o streamit -lcluster -lpthread -lstdc++
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/build/StreamIt/FIR/511/512/combined_threads.cpp:9:
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/node_server.h:22:
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/thread_info.h:20:
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/connection_info.h:19:
/Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/socket_holder.h:43:25: warning: delete called on 'mysocket' that is abstract but has non-virtual destructor
      [-Wdelete-non-virtual-dtor]
    if (!is_mem_socket) delete sock;
                        ^
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/build/StreamIt/FIR/511/512/combined_threads.cpp:9:
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/node_server.h:22:
In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/thread_info.h:26:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/vector:265:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/__bit_reference:15:
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/algorithm:641:10: fatal error: '__debug' file not found
#include <__debug>
         ^

이 문제를 해결할 아이디어가 있습니까? 추가 C ++ 플래그를 지정할 것으로 예상하지 않습니다.

감사.

PS : OSX 10.10.3의 MacBook pro

업데이트 :

이 문제는 Apple의 개발자 포럼에서 확인되었습니다. 명령 줄 도구 6.2에서 __debug 포함은 다음과 같이 조건부로 보호되지만 6.3에서는 보호되지 않습니다.

#ifdef _LIBCPP_DEBUG
#   include <__debug>
#else
#   define _LIBCPP_ASSERT(x, m) ((void)0)
#endif

그리고 libcxx 사람들은 여기서 __debug의 가드 제거에 대해 이야기 했습니다 . __debug는 OSX에 존재하지 않는 것 같습니다.


Apple의 개발자 다운로드 페이지 를 통해 명령 줄 도구를 6.2로 다운 그레이드합니다 .

OS X에 맞는 올바른 버전을 다운로드해야합니다.

  • OS X 10.10 commandlinetoolsosx10.10forxcode6.2.dmg
  • OS X 10.9 commandlinetoolsosx10.9forxcode6.2.dmg

이는 포함이 __debug명령 줄 도구 6.2에서 다음과 같이 조건부로 보호되지만 6.3에서는 보호 되지 않기 때문에 작동합니다 .

#ifdef _LIBCPP_DEBUG
#   include <__debug>
#else
#   define _LIBCPP_ASSERT(x, m) ((void)0)
#endif

제 생각에는 이것이 가장 안전한 방법입니다.

  1. 툴체인을 타협하지 않습니다
  2. Apple이 문제를 해결하면 App Store를 통해 쉽게 업그레이드 할 수 있습니다.
  3. 파일을 수동으로 추가하면 나중에 삭제해야합니다. 그렇지 않으면 더 많은 문제가 발생할 수 있습니다.

업데이트-2015 년 4 월 21 일

Apple에서 문제를 해결 했습니다. Command Line Tools 6.3.1을 설치하면 모든 것이 예상대로 작동합니다!


Temporarily create the missing __debug file where _LIBCPP_ASSERT is defined as in Command Line Tools 6.2 for OS X.

echo '#define _LIBCPP_ASSERT(x, m) ((void)0)' | sudo tee -a /Library/Developer/CommandLineTools/usr/include/c++/v1/__debug > /dev/null

Remove the temporary file after the build finished.

sudo rm /Library/Developer/CommandLineTools/usr/include/c++/v1/__debug

Warning!!! This is a hack, use at your own risk!!! This work-around is only meant as a temporary fix until Apple provides an update to the command-line tools.

OK, here we go: Create the file yourself and put the following content into it:

#ifndef _LIBCPP_ASSERT
#define _LIBCPP_ASSERT(...) ((void)0)
#endif

This seems to work for me, but it is certainly not the right thing to do. Make sure the file is located at the right place /Library/Developer/CommandLineTools/usr/include/c++/v1/__debug with the right owner/permissions.


This is now fixed in Command Line Tools 6.3.1, available from https://developer.apple.com/downloads. The update should appear automatically in your App Store Updates (though it’s labelled as 6.3, not 6.3.1). Apologies for the inconvenience, and thanks very much for reporting the issue.

Earlier: A workaround which worked for me in a simple case was setting a minimum of OS X 10.8 or earlier, with “-mmacosx-version-min=10.8”.


I followed @Flash Sheridan advice and got my CLT working again (git, ruby, brew...) - I used "Command Line Tools (OS X 10.10) for Xcode 6.3.1".

참고URL : https://stackoverflow.com/questions/29529455/missing-c-header-debug-after-updating-osx-command-line-tools-6-3

반응형