2013-07-09 1 views
1

macports에서 g ++ - mp-4.8을 다운로드하여 sleep()과 같은 일부 표준 명령을 실행하는 데 심각한 문제가 있습니다. llvm-g ++ - 4.2로 컴파일 할 때 이러한 문제가 발생하지 않습니다.새로운 gcc48 with macos에 대한 오류

이 프로그램에서 C++ 11 기능을 사용하려고하기 때문에 이것은 상당히 성가시다. 힌트에서 제안한 것처럼

17:11:54 **** Incremental Build of configuration Debug for project BSDESimV2 **** 
make all 
Building file: ../TrueSolutions/TrueSoln.cpp 
Invoking: GCC C++ Compiler 
/opt/local/bin/g++ -g -O0 -Wall -I/opt/local/include -I/usr/include -I/usr/llvm-gcc-4.2 /lib/gcc/i686-apple-darwin11/4.2.1/include -I/Applications/Xcode.app/Contents/Developer/usr/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/include -I/usr/include/c++/4.2.1 -I/usr/include/c++/4.2.1/backup -I/opt/local/bin -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"TrueSolutions/TrueSoln.d" -MT"TrueSolutions/TrueSoln.d" -o "TrueSolutions/TrueSoln.o" "../TrueSolutions/TrueSoln.cpp" 
In file included from /usr/include/c++/4.2.1/bits/stl_algobase.h:72:0, 
       from /usr/include/c++/4.2.1/bits/char_traits.h:46, 
       from /usr/include/c++/4.2.1/ios:45, 
       from /usr/include/c++/4.2.1/istream:44, 
       from /usr/include/c++/4.2.1/fstream:45, 
       from ../TrueSolutions/TrueSoln.h:15, 
       from ../TrueSolutions/TrueSoln.cpp:8: 
/usr/include/c++/4.2.1/bits/cpp_type_traits.h:381:12: error: expected identifier before '__is_pod' 
    struct __is_pod 
     ^
/usr/include/c++/4.2.1/bits/cpp_type_traits.h:381:12: error: expected unqualified-id before '__is_pod' 
/usr/include/c++/4.2.1/bits/cpp_type_traits.h:394:12: error: expected identifier before '__is_empty' 
    struct __is_empty 
     ^
/usr/include/c++/4.2.1/bits/cpp_type_traits.h:394:12: error: expected unqualified-id before '__is_empty' 
In file included from /usr/include/c++/4.2.1/memory:54:0, 
       from /usr/include/c++/4.2.1/string:48, 
       from /usr/include/c++/4.2.1/bits/locale_classes.h:47, 
       from /usr/include/c++/4.2.1/bits/ios_base.h:47, 
       from /usr/include/c++/4.2.1/ios:48, 
       from /usr/include/c++/4.2.1/istream:44, 
       from /usr/include/c++/4.2.1/fstream:45, 
       from ../TrueSolutions/TrueSoln.h:15, 
       from ../TrueSolutions/TrueSoln.cpp:8: 
/usr/include/c++/4.2.1/bits/allocator.h:135:41: error: expected unqualified-id before '__is_empty' 
    template<typename _Alloc, bool = std::__is_empty<_Alloc>::__value> 
            ^
/usr/include/c++/4.2.1/bits/allocator.h:135:41: error: expected '>' before '__is_empty' 
In file included from /usr/include/c++/4.2.1/vector:70:0, 
       from ../TrueSolutions/TrueSoln.h:23, 
       from ../TrueSolutions/TrueSoln.cpp:8: 
/usr/include/c++/4.2.1/bits/stl_vector.h: In member function 'void std::vector<_Tp, _Alloc>::swap(std::vector<_Tp, _Alloc>&)': 
/usr/include/c++/4.2.1/bits/stl_vector.h:740:34: error: template argument 2 is invalid 
    std::__alloc_swap<_Tp_alloc_type>::_S_do_it(_M_get_Tp_allocator(), 
          ^
/usr/include/c++/4.2.1/bits/stl_vector.h:740:45: error: invalid type in declaration before '(' token 
    std::__alloc_swap<_Tp_alloc_type>::_S_do_it(_M_get_Tp_allocator(), 
             ^
/usr/include/c++/4.2.1/bits/stl_vector.h:741:36: error: expression list treated as compound expression in initializer [-fpermissive] 
      __x._M_get_Tp_allocator()); 
           ^
In file included from /usr/include/c++/4.2.1/vector:71:0, 
       from ../TrueSolutions/TrueSoln.h:23, 
      from ../TrueSolutions/TrueSoln.cpp:8: 
/usr/include/c++/4.2.1/bits/stl_bvector.h: In member function 'void std::vector<bool, _Alloc>::swap(std::vector<bool, _Alloc>&)': 
/usr/include/c++/4.2.1/bits/stl_bvector.h:690:56: error: template argument 2 is invalid 
     std::__alloc_swap<typename _Base::_Bit_alloc_type>:: 
                ^
/usr/include/c++/4.2.1/bits/stl_bvector.h:691:10: error: invalid type in declaration before '(' token 
    _S_do_it(_M_get_Bit_allocator(), __x._M_get_Bit_allocator()); 
    ^
/usr/include/c++/4.2.1/bits/stl_bvector.h:691:61: error: expression list treated as compound expression in initializer [-fpermissive] 
    _S_do_it(_M_get_Bit_allocator(), __x._M_get_Bit_allocator()); 
                 ^
make: *** [TrueSolutions/TrueSoln.o] Error 1 
+0

또한 gcc46과 함께 작동하지 않을 수도 있습니다. – Plamen

+0

모든'-I' 플래그가 사용되는 이유는 무엇입니까? – trojanfoe

+0

-I/usr/... 플래그를 제거하면 다시 사용할 수없는 기능이 있습니다. 나는 문제가 gcc 버전 사이의 라이브러리 일관성이라고 생각하지만, 나는 그것을 둘러 쌀 수있는 헤더를 모른다. – Plamen

답변

0

, 내가 지웠어 : - 여기

가 컴파일러로부터 판독 내가 너무 길어 정말 미안 해요, 난 그냥 그것과 무슨 생각이 없다 모든 오래된 -I/ 's 및 내 코드와 STL과 사이에 약간의 충돌이 있었다 Eclipse, Macos 10.8 and C++11

에서와 clang++ 컴파일러를 설정하지만, 그들은 콘솔 출력에서 ​​사냥하기 쉬운했다.