标签: llvm-clang

Clang 工具在 Ubuntu 16.10 上找不到所需的库

我正在 Ubuntu 16.10 x64 上构建一个名为 using CMake 的简单 C++ Clang 工具程序ClangEx

该项目有一个main.cpp文件。其内容如下:

#include "clang/Frontend/FrontendActions.h"
#include "clang/Tooling/CommonOptionsParser.h"
#include "clang/Tooling/Tooling.h"
#include "llvm/Support/CommandLine.h"

using namespace clang::tooling;
using namespace llvm;

static llvm::cl::OptionCategory MyToolCategory("my-tool options");
static cl::extrahelp CommonHelp(CommonOptionsParser::HelpMessage);

static cl::extrahelp MoreHelp("\nMore help text...");

int main(int argc, const char **argv) {
  CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);
  ClangTool Tool(OptionsParser.getCompilations(),
                 OptionsParser.getSourcePathList());
  return Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>().get());
}
Run Code Online (Sandbox Code Playgroud)

它使用 CMake 成功构建,但当我使用它分析示例 C++ 程序时,出现以下错误:

$ ./ClangEx SandwichBar.cpp --
In file included from /home/bmuscede/SandwichBar.cpp:11:
In file included from /home/bmuscede/SandwichBar.h:14:
In file …
Run Code Online (Sandbox Code Playgroud)

c++ ubuntu clang llvm-clang

3
推荐指数
1
解决办法
2154
查看次数

有选择地禁用 clang-tidy 警告

有没有办法有选择地禁用 clang-tidy 警告。例如,我readability-identifier-naming启用了检查,并且还通过header-filter. 检查所有方法是否采用驼峰命名法。然而,有时有些类会直接替换另一个 STD 类或 Boost 类,因此它们具有小写命名约定。在这种情况下,clang-tidy 会发出很多警告。有没有办法针对特定代码段禁用它们。// clang-format off与clang-format的效果类似// clang-format on

llvm-clang

3
推荐指数
1
解决办法
6185
查看次数

clang - 错误:不支持裸函数中的非 ASM 语句

$ clang --version
clang version 5.0.0 (tags/RELEASE_500/final)  
Run Code Online (Sandbox Code Playgroud)

CC ../../py/nlrthumb.c
../../py/nlrthumb.c:79:5: error: non-ASM statement in naked function is not supported
    return 0; // needed to silence compiler warning
Run Code Online (Sandbox Code Playgroud)

为什么 Clang 不支持non-ASM statement in naked function

这在gcc.

邮件列表将其解释为

裸函数没有序言或尾声,因此对内联汇编以外的任何内容进行代码生成都可能完全失败。

那么怎么gcc办呢?

clang inline-assembly llvm-clang

3
推荐指数
1
解决办法
3616
查看次数

使用特定的 gcc 工具链从源代码构建 clang

我正在从源代码构建 clang,但使用不在正常位置的 gcc 7.2 构建。我希望生成的clang++二进制文件默认使用此工具链。我尝试这样做:

$ export GCC_PREFIX=/path/to/gcc/7.2
$ mkdir -p build
$ cd build
$ cmake -G Ninja -DCMAKE_C_COMPILER=${GCC_PREFIX}/bin/gcc \
     -DCMAKE_CXX_COMPILER=${GCC_PREFIX}/bin/g++ \
     -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_TARGETS_TO_BUILD=X86 ..
Run Code Online (Sandbox Code Playgroud)

但生成的构建只是查找/usr/include/c++/4.8.5标准库包含而不是像/path/to/gcc/7.2/include我想要的那样(并且,正如路径所示,4.8.5 有点旧)。有没有办法构建 clang,以便生成的二进制文件将搜索我想要的包含目录的路径?

注意,我知道我使用 运行生成的二进制文件--gcc-toolchain=${GCC_PREFIX}。这样可行。我想做的是将其构建到二进制文件中,这样我就不必每次都输入它。

gcc clang llvm-clang clang++

3
推荐指数
1
解决办法
1858
查看次数

如何在单个 (.a) 存档中仅获取所需的目标文件

只是一个简单的问题,但我无法\xe2\x80\x99t 在任何地方找到答案。将所有目标文件放入存档时,如何指示 clang++ 仅获取所需的目标文件进行链接,以避免由于 archive\xe2\x80\xaf 中不需要的符号而导致未定义符号错误?

\n

c c++ linker unix-ar llvm-clang

3
推荐指数
1
解决办法
2478
查看次数

开发过程中每次都需要重新编译C++代码吗?

假设我们有一个庞大的代码库,并且我们正在使用 C++ 进行开发。我们是否每次都必须重新编译才能测试代码?

如果是的话,那么开发将需要很长时间。

这个问题的解决办法是什么?

c++ gcc g++ clang llvm-clang

3
推荐指数
1
解决办法
5736
查看次数

llvm - 检查函数 A 是否正在调用函数 B 的最快方法

我需要检查我的文件中的函数 A 是否正在调用函数 B。我当前的方法是遍历函数 A 中的所有指令,看看是否有任何调用/调用指令正在调用 B。有人能建议更好的方法吗?

llvm llvm-gcc llvm-clang llvm-ir llvm-c++-api

3
推荐指数
1
解决办法
1456
查看次数

Homebrew 的 LLVM 在 macOS 上出现“致命错误:找不到‘stdio.h’文件”

    \n
  1. 安装LLVMbrew install llvm

    \n\n
  2. \n
  3. 编辑.zshrc

  4. \n
\n\n
...\nexport PATH="/usr/local/opt/llvm/bin:$PATH"\nexport LDFLAGS="-L/usr/local/opt/llvm/lib"\nexport CPPFLAGS="-I/usr/local/opt/llvm/include"\n...\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n
    \n
  1. 创造hello.c
  2. \n
\n\n
#include <stdio.h>\nint main()\n{\n    printf("Hello, World!");\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n
    \n
  1. 现在,当我跑步时clang -v hello.c,我得到:
  2. \n
\n\n
clang version 8.0.1 (tags/RELEASE_801/final)\nTarget: x86_64-apple-darwin18.7.0\nThread model: posix\nInstalledDir: /usr/local/opt/llvm/bin\n "/usr/local/Cellar/llvm/8.0.1/bin/clang-8" -cc1 -triple x86_64-apple-macosx10.14.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name hello.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -ggnu-pubnames -target-linker-version 450.3 -v -resource-dir /usr/local/Cellar/llvm/8.0.1/lib/clang/8.0.1 -fdebug-compilation-dir /Users/jdriwer/Projects …
Run Code Online (Sandbox Code Playgroud)

c macos llvm clang llvm-clang

3
推荐指数
1
解决办法
5733
查看次数

适用于MAC OS X上的Eclipse CDT的LLVM-Clang

无法通过Eclipse获得LLVM-Clang编译.只是在CDT默认的hello world示例上测试它.它给出了以下错误:

clang ++ -O0 -emit-llvm -g3 -Wall -c -fmessage-length = 0 -o src/Test.bc ../src/Test.cpp
llvm -ld -v -native -o test src/Test.bc
Internal构建器:无法运行程序"llvm-ld":未知原因
错误:在PATH中找不到程序"llvm-ld"

PATH = [/ usr/bin:/ bin:/ usr/sbin:/ sbin]
发生构建错误,构建停止

我不确定为什么它抱怨PATH,因为我可以通过终端调用clang ++和llvm-ld命令就好了.事实上,当我通过终端输入上述内容时,会出现以下错误.

clang ++ -O0 -emit-llvm -g3 -Wall -c -fmessage-length = 0 -o src/Test.bc ../src/Test.cpp
llvm -ld -v -native -o Test Debug/src/Test. bc
链接bitcode文件'Debug/src/Test.bc'llvm -ld
:错误:无法加载文件'Debug/src/Test.bc':无法加载Bitcode文件'Debug/src/Test.bc':未知类型在类型表中

那么它可能不是Eclipse的问题?从来没有太多的命令行编译人,所以我的知识有限.

我正在跑狮子.通过XCode命令行工具安装clang.通过Macports安装LLVM.必须手动设置我的LLVM路径.

Clang -v说3.1
LLVM是v3.0

compiler-errors eclipse-cdt llvm-clang osx-lion

2
推荐指数
1
解决办法
5601
查看次数

如何将clang-cl设置为c ++ 14或c ++ 1z?

我试图用-std = c ++ 14,-std = c ++ 1z,-std = c ++ 1y设置clang-cl参数.他们不工作.我正在使用clang 3.7 pre-build for windows x64和VS 2015.

clang llvm-clang clang++ visual-studio-2015

2
推荐指数
1
解决办法
3071
查看次数