当我使用gcc -v hello.c*编译时,输出显示以下搜索路径#include:
$ gcc -v hello.c
Apple LLVM version 9.1.0 (clang-902.0.39.2)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
...
clang -cc1 version 9.1.0 (clang-902.0.39.2) default target x86_64-apple-darwin17.7.0
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/Library/Developer/CommandLineTools/usr/lib/clang/9.1.0/include
/Library/Developer/CommandLineTools/usr/include
/usr/include
/System/Library/Frameworks (framework directory)
/Library/Frameworks (framework directory)
End of search list.
Run Code Online (Sandbox Code Playgroud)
有没有办法确定使用哪些位置? 例如,说hello.c包含#include <stdio.h>.我可以手动看到有stdio.h多个位置的版本,大概可以使用不同的功能构造:
$ find /usr/local/include -name "stdio.h"
/usr/local/include/c++/5.5.0/tr1/stdio.h
$ find /Library/Developer/CommandLineTools/usr/include -name "stdio.h"
/Library/Developer/CommandLineTools/usr/include/c++/v1/stdio.h
$ find /usr/include -name "stdio.h"
/usr/include/c++/4.2.1/tr1/stdio.h
/usr/include/sys/stdio.h
/usr/include/stdio.h
Run Code Online (Sandbox Code Playgroud)
在Python中,这看起来像:
>>> import math
>>> math.__file__
'/Users/brad/miniconda3/lib/python3.6/lib-dynload/math.cpython-36m-darwin.so'
Run Code Online (Sandbox Code Playgroud)
*我在Macbook上,所以gcc实际上似乎是路由clang,虽然它似乎是一个真正的可执行文件而不是符号链接.