在macos上使用新的gcc48时出错

时间:2013-07-09 15:22:23

标签: macos gcc compilation macports

我在使用从macports下载的g ++ - mp-4.8运行一些标准命令(例如sleep()时遇到严重问题。我没有使用llvm-g ++ - 4.2编译这些问题。

这非常烦人,因为我正在尝试在此程序中使用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

1 个答案:

答案 0 :(得分:0)

正如提示中所建议的那样,我摆脱了所有过时的-I/并设置clang++编译器,如Eclipse, Macos 10.8 and C++11

我的代码与stl之间存在一些冲突,但它们很容易从控制台输出中搜寻。<​​/ p>