c++ - 编译 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 ‘>’ 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
从 CXXFLAGS 中删除。这是 g++7 的默认设置。
所以我安装了 gcc-4.6.3,并使用它
您是否更改了CMAKE_C_COMPILER
andCMAKE_CXX_COMPILER
标志以便cmake可以使用gcc-4.6代替?
h,
推荐阅读
- android - 导航抽屉中的通知徽章
- django - 如何在 django 中获取翻译记录
- windows - 如何测试 gcc 是否无法在 Windows 批处理文件 (cmd) 中编译程序?
- android - ThreadpoolExecutor 数据混淆
- asp.net-mvc - 'HttpOnly' 应该添加到 'auth' cookie
- android - ListView 在 ScrollView 中只显示一项?
- node.js - excludeFromIndexes:[] 不起作用。实体属性仍然被索引
- python - 当包不再从频道可用时重现 conda 环境
- javascript - 使用map.reduce将数组转换为换行符分隔的字符串?
- java - iframe下如何处理