【问题标题】:View default include path of C headers in Mac OS X by `gcc -v`?通过`gcc -v`查看Mac OS X中C头文件的默认包含路径?
【发布时间】:2013-11-08 05:26:06
【问题描述】:

我尝试使用gcc -v 在 Mac OS X (Mavericks) 中找到 C 编译器的默认包含路径:

$ gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.0
Thread model: posix

好像告诉我路径是/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1,但恐怕不是真正的路径。我认为包含标准C库的真正路径是/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include,因为<sys/syscall.h>位于后面的路径中,即/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/sys/syscall.h

有人知道如何在 Mac OS X 中查看 C 库的所有默认包含路径吗?

【问题讨论】:

    标签: c++ c xcode macos


    【解决方案1】:

    您需要询问 预处理器,而不是 gcc,以告知默认包含路径。

    你可以说:

    `gcc -print-prog-name=cc1` -v
    

    为了列出 C 和 C++ 的默认包含路径:

    `gcc -print-prog-name=cc1plus` -v
    

    (您上面列出的路径是在构建时用于配置 GCC的路径。)


    列出默认包含路径的另一种方法是:

    gcc -x c -v -E /dev/null
    
    gcc -x c++ -v -E /dev/null     # (for C/C++)
    

    【讨论】:

    • 这在 OS X Mavericks (Xcode 5) 上不起作用,因为gcc 实际上调用了cc,即clang。他们都返回cc1,但实际上并不存在。
    • 我试过你的方法,发现只有gcc -x c++ -v -E /dev/null适用于Mac OS 10.12.5。
    猜你喜欢
    • 2011-12-11
    • 1970-01-01
    • 2012-06-01
    • 2011-05-02
    • 2015-03-12
    • 2012-12-16
    • 2010-11-01
    • 2014-01-06
    相关资源
    最近更新 更多