When compile llvm 3.1, why get error: expected primary-expression before ‘>’ token
When compile llvm 3.1, why get error: expected primary-expression before ‘>’ token
出于某种原因,我需要安装 llvm 3.1 或 llvm 3.0,但在 make
期间出现此错误。
[ 5%] Building CXX object utils/TableGen/CMakeFiles/llvm-tblgen.dir/AsmMatcherEmitter.cpp.o
In file included from /home/ubuntu/llvm/utils/TableGen/AsmMatcherEmitter.cpp:103:0:
/home/ubuntu/llvm/include/llvm/ADT/PointerUnion.h: In member function ‘int llvm::PointerUnion3<PT1, PT2, PT3>::is() const’:
/home/ubuntu/llvm/include/llvm/ADT/PointerUnion.h:266:26: error: expected primary-expression before ‘>’ token
return Ty(Val).is<T>();
^
/home/ubuntu/llvm/include/llvm/ADT/PointerUnion.h:266:28: error: expected primary-expression before ‘)’ token
return Ty(Val).is<T>();
^
/home/ubuntu/llvm/include/llvm/ADT/PointerUnion.h: In member function ‘T llvm::PointerUnion3<PT1, PT2, PT3>::get() const’:
/home/ubuntu/llvm/include/llvm/ADT/PointerUnion.h:279:27: error: expected primary-expression before ‘>’ token
return Ty(Val).get<T>();
^'
/home/ubuntu/llvm/include/llvm/ADT/PointerUnion.h:279:29: error: expected primary-expression before ‘)’ token
return Ty(Val).get<T>();
^
我猜测可能是llvm 3.0和gcc 7.0.0之间存在兼容性问题,所以我安装了gcc-4.6.3,并使用这个cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/home/ubuntu/install -DCMAKE_CXX_LINK_FLAGS="-Wl,-rpath,$HOME/gcc463/install -L$HOME/gcc463/install" -G "Unix Makefiles" ../llvm
进行配置。但是仍然出现同样的错误。任何人都知道为什么以及如何解决它?谢谢!!
尝试传递 -std=c++98
,如果不行则传递 -std=c++11
。恐怕这可能是因为不同的 C++ 版本不兼容。
此外,您可能必须从 CXXFLAGS 中删除 -std=c++14
(如果存在)。这是 g++7 的默认设置。
So I installed gcc-4.6.3, and use this
您是否更改了 CMAKE_C_COMPILER
和 CMAKE_CXX_COMPILER
标志以便 cmake 可以使用 gcc-4.6相反?
hth,
出于某种原因,我需要安装 llvm 3.1 或 llvm 3.0,但在 make
期间出现此错误。
[ 5%] Building CXX object utils/TableGen/CMakeFiles/llvm-tblgen.dir/AsmMatcherEmitter.cpp.o
In file included from /home/ubuntu/llvm/utils/TableGen/AsmMatcherEmitter.cpp:103:0:
/home/ubuntu/llvm/include/llvm/ADT/PointerUnion.h: In member function ‘int llvm::PointerUnion3<PT1, PT2, PT3>::is() const’:
/home/ubuntu/llvm/include/llvm/ADT/PointerUnion.h:266:26: error: expected primary-expression before ‘>’ token
return Ty(Val).is<T>();
^
/home/ubuntu/llvm/include/llvm/ADT/PointerUnion.h:266:28: error: expected primary-expression before ‘)’ token
return Ty(Val).is<T>();
^
/home/ubuntu/llvm/include/llvm/ADT/PointerUnion.h: In member function ‘T llvm::PointerUnion3<PT1, PT2, PT3>::get() const’:
/home/ubuntu/llvm/include/llvm/ADT/PointerUnion.h:279:27: error: expected primary-expression before ‘>’ token
return Ty(Val).get<T>();
^'
/home/ubuntu/llvm/include/llvm/ADT/PointerUnion.h:279:29: error: expected primary-expression before ‘)’ token
return Ty(Val).get<T>();
^
我猜测可能是llvm 3.0和gcc 7.0.0之间存在兼容性问题,所以我安装了gcc-4.6.3,并使用这个cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/home/ubuntu/install -DCMAKE_CXX_LINK_FLAGS="-Wl,-rpath,$HOME/gcc463/install -L$HOME/gcc463/install" -G "Unix Makefiles" ../llvm
进行配置。但是仍然出现同样的错误。任何人都知道为什么以及如何解决它?谢谢!!
尝试传递 -std=c++98
,如果不行则传递 -std=c++11
。恐怕这可能是因为不同的 C++ 版本不兼容。
此外,您可能必须从 CXXFLAGS 中删除 -std=c++14
(如果存在)。这是 g++7 的默认设置。
So I installed gcc-4.6.3, and use this
您是否更改了 CMAKE_C_COMPILER
和 CMAKE_CXX_COMPILER
标志以便 cmake 可以使用 gcc-4.6相反?
hth,