我正在尝试将使用 Clang 的 LibTooling 库的项目从 Arch 移植到 Ubuntu/Debian。我已经安装了clang-10
和llvm-10
软件包libclang-10-dev
。后者将必要的标头安装到/usr/lib/llvm-10/include/clang/
(即usr/lib/llvm-10/include/clang/Tooling/Tooling.h
)。但是,尝试链接使用这些标头的程序会导致各种链接错误,例如:
undefined reference to `clang::ast_matchers::internal::DynTypedMatcher::matches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const'
在 Arch 下我可以解决这个问题,-lclang-cpp
但在 Ubuntu 下没有这样的库。StackOverflow 上的几篇帖子建议链接到各种其他库,所以我也尝试过:
-lclangFrontendTool -lclangFrontend -lclangDriver -lclangSerialization -lclangCodeGen -lclangParse -lclangSema -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangAnalysis -lclangARCMigrate -lclangRewriteFrontend -lclangEdit -lclangAST -lclangLex -lclangBasic
但这也行不通。libclang-*-dev
软件包不完整/损坏了吗?我又漏掉了一个软件包吗?还是我只是链接到了错误的库?