clang:警告:编译LLVM时没有这样的sysroot目录:' - mathcosx-version-min = 10.5'(3.9.0)

时间:2016-09-11 16:05:40

标签: c++ macos clang llvm

我正在使用GCC在我的Mac(OsX)上使用CMake(3.6.2)编译LLVM(3.9.0),但不知怎的,我在跟随GCC配置时出现以下错误

Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
[50%] Building C object projects/compiler-rt/lib/builtins/CMakeFiles/clang_rt.eprintf.dir/eprintf.c.o
clang: warning: no such sysroot directory: '-mmacosx-version-min=10.5'
/Users/Ritzy/llvm_src/llvm-3.9.0.src/projects/compiler-rt/lib/builtins/eprintf.c:14:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^
1 error generated.
make[2]: *** [projects/compiler-rt/lib/builtins/CMakeFiles/clang_rt.eprintf.dir/eprintf.c.o] Error 1
make[1]: *** [projects/compiler-rt/lib/builtins/CMakeFiles/clang_rt.eprintf.dir/all] Error 2
make: *** [all] Error 2

我正在使用以下CMake命令:

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR  ..
cmake --build .

我花了几个小时搞清楚出了什么问题。甚至试图使用gcc6和clang但是徒劳无功。

1 个答案:

答案 0 :(得分:1)

以下是提供给MacOS / X clang调用的命令行标志的示例:

-pipe -stdlib=libc++ -std=c++11 -stdlib=libc++ -O2 -std=gnu++11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.7 -Wall -W -fPIC $(DEFINES)

特别注意这一部分:

-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.7

-isysroot告诉编译器在哪里查找头文件,然后下一个参数-mmacosx-version-min = 10.7告诉它与MacOS / X的最小版本保持向后兼容性。

在您的情况下,您的CMake调用可能没有为-isysroot参数指定值,而是可能具有以下内容:

-isysroot   -mmacosx-version-min=10.5

...由于某种原因,在-isysroot标志之后要提供的路径被留空(即空字符串),这就是为什么“-mmacosx-version-min = 10.5”正在解释为查找头文件的路径(当然不起作用)。

至于为什么路径参数留空,这是你必须自己调查的事情。