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
제 생각에는 이것이 가장 안전한 방법입니다.
- 툴체인을 타협하지 않습니다
- Apple이 문제를 해결하면 App Store를 통해 쉽게 업그레이드 할 수 있습니다.
- 파일을 수동으로 추가하면 나중에 삭제해야합니다. 그렇지 않으면 더 많은 문제가 발생할 수 있습니다.
업데이트-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".
'UFO ET IT' 카테고리의 다른 글
null이 아닌 속성은 null 또는 임시 값을 참조합니다. (0) | 2020.11.14 |
---|---|
Goto Label 이후의 변수 선언 (0) | 2020.11.14 |
Qt 및 Boost 혼합 (0) | 2020.11.14 |
JSON 용 스트리밍 API가 있습니까? (0) | 2020.11.14 |
이것이 SQL에서 부울 테스트를 수행하는 적절한 방법입니까? (0) | 2020.11.14 |