从macOS Catalina上的源代码编译LLVM(如何解决“ stdio.h”未找到)

臭氧

我提请您注意我几天解决的问题,没有任何问题可以为我解决,希望可以节省其他人的时间。

我尝试从macOS Catalina(10.15)上的源代码编译LLVM。

为此,我使用了以下命令(在遵循LLVM构建手册之后):

git clone https://github.com/llvm/llvm-project
cd llvm-project
mkdir build && cd build
cmake -G "Ninja" -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" -DCMAKE_BUILD_TYPE="Debug" ../llvm
ninja

现在,您应该在build / bin下有一个可用的clang编译器。但是,给出/tmp/program.c以下内容:

#include <stdio.h>

int main() {
    printf("Hello, world!\n");
    return 0;
}

我得到以下输出:

/tmp/program.c:1:10:致命错误:找不到'stdio.h'文件
#include <stdio.h> 
         ^ ~~~~~~~~
产生1个错误.```

我尝试了很多解决方案,包括设置“ CPATH”,“ CFLAGS”,“ CXXFLAGS”,“ LDFLAGS”等,但均无效。
臭氧

系统标题新路径

从macOS Catalina开始,该/usr文件夹被挂载为只读目录,因此即使是root用户也没有人可以修改该文件夹(当然,除非您以SIP模式重启,这显然不是一个不错的解决方案)。整个工具链默认保存在下/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk您可以通过执行来获取路径xcrun --show-sdk-path我假设您的答案中确实有默认路径,但是请根据需要进行调整。

收集信息

运行clang-v标志给了我的情况如下:

./clang /tmp/program.c -v --    
clang version 11.0.0 (https://github.com/llvm/llvm-project 01641197ee0bd3895c756c925723c8c8e03bcb09)
Target: x86_64-apple-darwin19.5.0
Thread model: posix
InstalledDir: ~/llvm/llvm-project/build/bin/.
 "~/llvm/llvm-project/build/bin/clang-11" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free -main-file-name program.c -mrelocation-model pic -pic-level 2 -mframe-pointer=all -fno-rounding-math -munwind-tables -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 556.6 -v -resource-dir ~/llvm/llvm-project/build/lib/clang/11.0.0 -internal-isystem /usr/local/include -internal-isystem ~/llvm/llvm-project/build/lib/clang/11.0.0/include -internal-externc-isystem /usr/include -fdebug-compilation-dir ~/llvm/llvm-project/build/bin -ferror-limit 19 -stack-protector 1 -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fmax-type-align=16 -fcolor-diagnostics -o /var/folders/64/6bf82c_52ws1n4cwc376znvr0000gn/T/program-d111a4.o -x c /tmp/program.c
clang -cc1 version 11.0.0 based upon LLVM 11.0.0git default target x86_64-apple-darwin19.5.0
ignoring nonexistent directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 ~/llvm/llvm-project/build/lib/clang/11.0.0/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.
/tmp/program.c:1:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.

可以告诉我们,系统标头的包含路径为:

/usr/local/include
~/llvm/llvm-project/build/lib/clang/11.0.0/include
/System/Library/Frameworks (framework directory)
/Library/Frameworks (framework directory)

因此,我们可以看到新标题(/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk的位置没有出现在此处,因此出现了错误。

我们可以做从/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk的符号链接/usr/local/include,但是这样做会产生冲突的标题,并产生不良的副作用(是的,我尝试过。是的,这非常愚蠢……)。

我们可以看到默认搜索头路径之一出现在构建目录(~/llvm/llvm-project/build/lib/clang/11.0.0/include)下。将标准标头符号链接到该目录不会造成任何危险的冲突。

因此,解决此问题所需要做的就是:

ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/* ~/llvm/llvm-project/build/lib/clang/11.0

我希望我的回答可以帮助其他在这个问题上苦苦挣扎的人。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检测是否包含stdio.h?

来自分类Dev

在 Mac 上从源代码编译 Qt Creator 4.7.0 时未找到 qbs.h

来自分类Dev

macOS Catalina上的节点无效。我该如何解决?

来自分类Dev

Flutter失败安装MacOS Catalina并显示终端消息-bash:flutter:未找到命令”

来自分类Dev

在libclang中如何从stdio.h中排除函数

来自分类Dev

如何知道没有stdio.h的EOF?

来自分类Dev

即使安装了命令行工具,GCC也无法在OS X上找到stdio.h

来自分类Dev

Xcode中的编译错误,未找到subliminal.h

来自分类Dev

从R调用Rust货物导致在macOS上出现“未找到货物”错误

来自分类Dev

rEFInd无法在macOs Sierra上运行:“加载旧版加载程序时未找到”

来自分类Dev

使用Haivision-SRT 1.4.1在macOS上编译ffmpeg-4.2.2 >>>错误:使用pkg-config未找到srt> = 1.3.0

来自分类Dev

如何解决Android Studio上编译时未找到与.class相关的文件的错误?

来自分类Dev

如何在macOS上找到C头文件errno.h的位置?

来自分类Dev

#include <stdio.h> 中的主题标签无法编译(C 编程)

来自分类Dev

getchar() 如何与 stdio 流同步?

来自分类Dev

“ #include <stdio.h>”在C程序中实际上是做什么的

来自分类Dev

pip在Mac OS X Mavericks(10.9)上引发stdio.h找不到错误

来自分类Dev

pip在Mac OS X Mavericks(10.9)上引发stdio.h找不到错误

来自分类Dev

如果stdio.h中缺少“ getline”功能,从哪里/如何获取?

来自分类Dev

如何在不使用stdio.h库的情况下从文件读取和写入?

来自分类Dev

/usr/include/stdio.h中的“ #define stdin stdin”应该如何工作?

来自分类Dev

如何为 Visual stdio 预编译 SCIP

来自分类Dev

Cygwin gcc找不到stdio.h

来自分类Dev

ctags无法正确解析stdio.h

来自分类Dev

编译器说未找到uuid.h,但apt-get表示它已

来自分类Dev

Bison Flex编译器返回“ y.tab.h”文件未找到错误

来自分类Dev

编译lex.yy.c时未找到标头y.tab.h

来自分类Dev

自制错误提示未找到SDK(MacOS 11 / 10.16)

来自分类Dev

使用 Swift 和 ObjC 代码库时未找到 PojectName-Swift.h

Related 相关文章

  1. 1

    如何检测是否包含stdio.h?

  2. 2

    在 Mac 上从源代码编译 Qt Creator 4.7.0 时未找到 qbs.h

  3. 3

    macOS Catalina上的节点无效。我该如何解决?

  4. 4

    Flutter失败安装MacOS Catalina并显示终端消息-bash:flutter:未找到命令”

  5. 5

    在libclang中如何从stdio.h中排除函数

  6. 6

    如何知道没有stdio.h的EOF?

  7. 7

    即使安装了命令行工具,GCC也无法在OS X上找到stdio.h

  8. 8

    Xcode中的编译错误,未找到subliminal.h

  9. 9

    从R调用Rust货物导致在macOS上出现“未找到货物”错误

  10. 10

    rEFInd无法在macOs Sierra上运行:“加载旧版加载程序时未找到”

  11. 11

    使用Haivision-SRT 1.4.1在macOS上编译ffmpeg-4.2.2 >>>错误:使用pkg-config未找到srt> = 1.3.0

  12. 12

    如何解决Android Studio上编译时未找到与.class相关的文件的错误?

  13. 13

    如何在macOS上找到C头文件errno.h的位置?

  14. 14

    #include <stdio.h> 中的主题标签无法编译(C 编程)

  15. 15

    getchar() 如何与 stdio 流同步?

  16. 16

    “ #include <stdio.h>”在C程序中实际上是做什么的

  17. 17

    pip在Mac OS X Mavericks(10.9)上引发stdio.h找不到错误

  18. 18

    pip在Mac OS X Mavericks(10.9)上引发stdio.h找不到错误

  19. 19

    如果stdio.h中缺少“ getline”功能,从哪里/如何获取?

  20. 20

    如何在不使用stdio.h库的情况下从文件读取和写入?

  21. 21

    /usr/include/stdio.h中的“ #define stdin stdin”应该如何工作?

  22. 22

    如何为 Visual stdio 预编译 SCIP

  23. 23

    Cygwin gcc找不到stdio.h

  24. 24

    ctags无法正确解析stdio.h

  25. 25

    编译器说未找到uuid.h,但apt-get表示它已

  26. 26

    Bison Flex编译器返回“ y.tab.h”文件未找到错误

  27. 27

    编译lex.yy.c时未找到标头y.tab.h

  28. 28

    自制错误提示未找到SDK(MacOS 11 / 10.16)

  29. 29

    使用 Swift 和 ObjC 代码库时未找到 PojectName-Swift.h

热门标签

归档