llvm9.0.0编译命令及bug

https://github.com/llvm/llvm-project/commit/98b1752888c0282bf5504b67484b92d8d069f1b8

编译命令


mkdir build

cd build

cmake -G "Unix Makefiles" -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/lx/local -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_C_COMPILER=/usr/bin/gcc -DLLVM_ENABLE_PROJECTS="clang"  ..

make -j4

make install

bug3

这个错误是编译的过程中虚拟机把c盘空间占满了,系统死机,重启之后出现了这个错误,重新编译这个错误就消失了。

/usr/bin/ld: ../../../../lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::ReadMethodPool(clang::Selector)':
ASTReader.cpp:(.text._ZN5clang9ASTReader14ReadMethodPoolENS_8SelectorE+0x416): undefined reference to `clang::Sema::addMethodToGlobalList(clang::ObjCMethodList*, clang::ObjCMethodDecl*)'
/usr/bin/ld: ASTReader.cpp:(.text._ZN5clang9ASTReader14ReadMethodPoolENS_8SelectorE+0x44e): undefined reference to `clang::Sema::addMethodToGlobalList(clang::ObjCMethodList*, clang::ObjCMethodDecl*)'
/usr/bin/ld: ../../../../lib/libclangParse.a(ParseCXXInlineMethods.cpp.o): in function `clang::Parser::ParseLexedMethodDeclarations(clang::Parser::ParsingClass&)':
ParseCXXInlineMethods.cpp:(.text._ZN5clang6Parser28ParseLexedMethodDeclarationsERNS0_12ParsingClassE+0x5d): undefined reference to `clang::Sema::ActOnStartDelayedMemberDeclarations(clang::Scope*, clang::Decl*)'
/usr/bin/ld: ParseCXXInlineMethods.cpp:(.text._ZN5clang6Parser28ParseLexedMethodDeclarationsERNS0_12ParsingClassE+0x100): undefined reference to `clang::Sema::ActOnFinishDelayedMemberDeclarations(clang::Scope*, clang::Decl*)'
/usr/bin/ld: ParseCXXInlineMethods.cpp:(.text._ZN5clang6Parser28ParseLexedMethodDeclarationsERNS0_12ParsingClassE+0x130): undefined reference to `clang::Sema::ActOnReenterTemplateScope(clang::Scope*, clang::Decl*)'
/usr/bin/ld: ../../../../lib/libclangParse.a(ParseCXXInlineMethods.cpp.o): in function `clang::Parser::ParseLexedMethodDefs(clang::Parser::ParsingClass&)':
ParseCXXInlineMethods.cpp:(.text._ZN5clang6Parser20ParseLexedMethodDefsERNS0_12ParsingClassE+0xeb): undefined reference to `clang::Sema::ActOnReenterTemplateScope(clang::Scope*, clang::Decl*)'
/usr/bin/ld: ../../../../lib/libclangParse.a(ParseCXXInlineMethods.cpp.o): in function `clang::Parser::ParseLexedMethodDef(clang::Parser::LexedMethod&)':
ParseCXXInlineMethods.cpp:(.text._ZN5clang6Parser19ParseLexedMethodDefERNS0_11LexedMethodE+0x219): undefined reference to `clang::Sema::ActOnDefaultCtorInitializers(clang::Decl*)'
/usr/bin/ld: ParseCXXInlineMethods.cpp:(.text._ZN5clang6Parser19ParseLexedMethodDefERNS0_11LexedMethodE+0x5a1): undefined reference to `clang::Sema::ActOnReenterTemplateScope(clang::Scope*, clang::Decl*)'
/usr/bin/ld: ../../../../lib/libclangParse.a(ParseCXXInlineMethods.cpp.o): in function `clang::Parser::ParseLexedMemberInitializers(clang::Parser::ParsingClass&)':
ParseCXXInlineMethods.cpp:(.text._ZN5clang6Parser28ParseLexedMemberInitializersERNS0_12ParsingClassE+0x68): undefined reference to `clang::Sema::ActOnStartDelayedMemberDeclarations(clang::Scope*, clang::Decl*)'
/usr/bin/ld: ParseCXXInlineMethods.cpp:(.text._ZN5clang6Parser28ParseLexedMemberInitializersERNS0_12ParsingClassE+0xec): undefined reference to `clang::Sema::ActOnFinishDelayedMemberDeclarations(clang::Scope*, clang::Decl*)'
/usr/bin/ld: ParseCXXInlineMethods.cpp:(.text._ZN5clang6Parser28ParseLexedMemberInitializersERNS0_12ParsingClassE+0xf9): undefined reference to `clang::Sema::ActOnFinishDelayedMemberInitializers(clang::Decl*)'
/usr/bin/ld: ParseCXXInlineMethods.cpp:(.text._ZN5clang6Parser28ParseLexedMemberInitializersERNS0_12ParsingClassE+0x155): undefined reference to `clang::Sema::ActOnFinishDelayedMemberInitializers(clang::Decl*)'
/usr/bin/ld: ParseCXXInlineMethods.cpp:(.text._ZN5clang6Parser28ParseLexedMemberInitializersERNS0_12ParsingClassE+0x1ab): undefined reference to `clang::Sema::ActOnReenterTemplateScope(clang::Scope*, clang::Decl*)'
/usr/bin/ld: ../../../../lib/libclangParse.a(ParseCXXInlineMethods.cpp.o): in function `clang::Parser::ParseLexedMemberInitializer(clang::Parser::LateParsedMemberInitializer&)':
ParseCXXInlineMethods.cpp:(.text._ZN5clang6Parser27ParseLexedMemberInitializerERNS0_27LateParsedMemberInitializerE+0x1bb): undefined reference to `clang::Sema::ActOnStartCXXInClassMemberInitializer()'
/usr/bin/ld: ParseCXXInlineMethods.cpp:(.text._ZN5clang6Parser27ParseLexedMemberInitializerERNS0_27LateParsedMemberInitializerE+0x1eb): undefined reference to `clang::Sema::ActOnFinishCXXInClassMemberInitializer(clang::Decl*, clang::SourceLocation, clang::Expr*)'

bug2

该bug需要在对应的头文件benchmark_register.h中加上
#include<limits>

/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/utils/benchmark/src/benchmark_register.h:17:30: error: ‘numeric_limits’ is not a member of ‘std’
17 | static const T kmax = std::numeric_limits::max();
| ^~~~~~~~~~~~~~
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/utils/benchmark/src/benchmark_register.h:17:46: error: expected primary-expression before ‘>’ token
17 | static const T kmax = std::numeric_limits::max();
| ^
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/utils/benchmark/src/benchmark_register.h:17:49: error: ‘::max’ has not been declared; did you mean ‘std::max’?
17 | static const T kmax = std::numeric_limits::max();
| ^~~
| std::max

bug1

编译llvm9.0.0过程中出现如下错误,经过搜索,这是llvm9.0的bug,
在llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h中#include修改成下面这样

#include "llvm/Demangle/DemangleConfig.h"
#include "llvm/Demangle/StringView.h"
#include <array>
#include <cstdint>
#include <string>

/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:33:17: error: found ‘:’ in nested-name-specifier, expected ‘::’
33 | enum Qualifiers : uint8_t {
| ^
| ::
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:33:6: error: ‘Qualifiers’ has not been declared
33 | enum Qualifiers : uint8_t {
| ^~~~~~~~~~
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:33:27: error: expected unqualified-id before ‘{’ token
33 | enum Qualifiers : uint8_t {
| ^
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:44:6: warning: elaborated-type-specifier for a scoped enum must not use the ‘class’ keyword
44 | enum class StorageClass : uint8_t {
| ~~~~ ^~~~~
| -----
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:44:25: error: found ‘:’ in nested-name-specifier, expected ‘::’
44 | enum class StorageClass : uint8_t {
| ^
| ::
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:44:12: error: ‘StorageClass’ has not been declared
44 | enum class StorageClass : uint8_t {
| ^~~~~~~~~~~~
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:44:35: error: expected unqualified-id before ‘{’ token
44 | enum class StorageClass : uint8_t {
| ^
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:57:6: warning: elaborated-type-specifier for a scoped enum must not use the ‘class’ keyword
57 | enum class CallingConv : uint8_t {
| ~~~~ ^~~~~
| -----
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:57:24: error: found ‘:’ in nested-name-specifier, expected ‘::’
57 | enum class CallingConv : uint8_t {
| ^
| ::
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:57:12: error: ‘CallingConv’ has not been declared
57 | enum class CallingConv : uint8_t {
| ^~~~~~~~~~~
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:57:34: error: expected unqualified-id before ‘{’ token
57 | enum class CallingConv : uint8_t {
| ^
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:70:6: warning: elaborated-type-specifier for a scoped enum must not use the ‘class’ keyword
70 | enum class ReferenceKind : uint8_t { None, LValueRef, RValueRef };
| ~~~~ ^~~~~
| -----
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:70:26: error: found ‘:’ in nested-name-specifier, expected ‘::’
70 | enum class ReferenceKind : uint8_t { None, LValueRef, RValueRef };
| ^
| ::
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:70:12: error: ‘ReferenceKind’ has not been declared
70 | enum class ReferenceKind : uint8_t { None, LValueRef, RValueRef };
| ^~~~~~~~~~~~~
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:70:36: error: expected unqualified-id before ‘{’ token
70 | enum class ReferenceKind : uint8_t { None, LValueRef, RValueRef };
| ^
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:110:6: warning: elaborated-type-specifier for a scoped enum must not use the ‘class’ keyword
110 | enum class IntrinsicFunctionKind : uint8_t {
| ~~~~ ^~~~~
| -----
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:110:34: error: found ‘:’ in nested-name-specifier, expected ‘::’
110 | enum class IntrinsicFunctionKind : uint8_t {
| ^
| ::
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:110:12: error: ‘IntrinsicFunctionKind’ has not been declared
110 | enum class IntrinsicFunctionKind : uint8_t {
| ^~~~~~~~~~~~~~~~~~~~~
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:110:44: error: expected unqualified-id before ‘{’ token
110 | enum class IntrinsicFunctionKind : uint8_t {
| ^
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:201:16: error: found ‘:’ in nested-name-specifier, expected ‘::’
201 | enum FuncClass : uint16_t {
| ^
| ::
/home/lx/download/pliner/llvm-project-llvmorg-9.0.0/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h:201:6: error: ‘FuncClass’ has not been declared

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值