我想在不同的目标上运行clang静态分析器。这是makefile片段:
CC = <path to clang folder>/build/bin/clang
.
.
.
src/%.o: ../src/%.c
${CC} --target=powerpc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"我正在尝试编译成powerpc。以下是命令行和输出:
>> <path_to_llvm_folder>/llvm/tools/clang/tools/scan-build/scan-build --use-analyzer=<path_to_llvm_folder>/build/bin/clang make
scan-build: Using '<path_to_llvm_folder>/build/bin/clang' for static analysis
Building file: ../src/testing.c
Invoking: GCC C Compiler
<path to clang folder>/llvm/tools/clang/tools/scan-build/ccc-analyzer --target=powerpc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/testing.d" -MT"src/testing.o" -o "src/testing.o" "../src/testing.c"
cc1: warning: command line option "-ftarget=powerpc" is valid for Java but not for C请注意,尽管makefile调用的是clang -I获取的是gcc的warning...So,但我如何使用clang编译代码并针对不同的目标进行静态分析?
发布于 2016-09-15 17:59:08
找到了解决方案。我认为下一个参数中的ccc-analyzer脚本中有一个bug:
my %CompilerLinkerOptionMap = (
'-Wwrite-strings' => 0,
'-ftrapv-handler' => 1, # specifically call out separated -f flag
'-mios-simulator-version-min' => 0, # This really has 1 argument, but always has '='
'-isysroot' => 1,
'-arch' => 1,
'-m32' => 0,
'-m64' => 0,
'-stdlib' => 0, # This is really a 1 argument, but always has '='
'--sysroot' => 1,
'-target' => 1,
'-v' => 0,
'-mmacosx-version-min' => 0, # This is really a 1 argument, but always has '='
'-miphoneos-version-min' => 0 # This is really a 1 argument, but always has '='
);这个
'-target' => 1,需要的是
'--target' => 1,(带有两个'-')...
https://stackoverflow.com/questions/39492030
复制相似问题