首页 > 解决方案 > 编译 llvm 3.1 时,为什么会出现错误:“>”标记之前的预期主表达式

问题描述

出于某种原因,我需要安装 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 ‘&gt;’ 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 ‘&gt;’ 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来配置。但同样的错误仍然发生。任何人都知道为什么以及如何解决它?谢谢!!

标签: c++gccllvm

解决方案


尝试通过,-std=c++98或者如果这不起作用,那么-std=c++11。恐怕这可能是因为不同的 C++ 版本不兼容。

此外,如果 CXXFLAGS 存在,您可能必须将其-std=c++14从 CXXFLAGS 中删除。这是 g++7 的默认设置。

所以我安装了 gcc-4.6.3,并使用它

您是否更改了CMAKE_C_COMPILERandCMAKE_CXX_COMPILER标志以便cmake可以使用gcc-4.6代替?

h,


推荐阅读