gpt4 book ai didi

clang - 如何为 Apple M1 构建 LLVM (clang,clang++)?

转载 作者:行者123 更新时间:2023-12-03 23:59:00 30 4
gpt4 key购买 nike

我正在尝试构建 LLVM 编译器,以便我可以在 Apple M1 上启用 OpenMP。
我正在使用 LLVM 开发树,(因为我最近看到一些 OpenMP 运行时对此进行了处理)。
我已经结束了这个脚本来调用 cmake:

# Xcode, Ninja
BUILD_SYSTEM=Ninja
BUILD_TAG=Ninja

cmake ../llvm \
-G$BUILD_SYSTEM -B ${BUILD_TAG}_build \
-DCMAKE_OSX_ARCHITECTURES='arm64' \
-DCMAKE_C_COMPILER=`which clang` \
-DCMAKE_CXX_COMPILER=`which clang++` \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_BUILD_WITH_INSTALL_RPATH=1 \
-DCMAKE_INSTALL_PREFIX=$HOME/software/clang-12.0.0/arm64 \
-DLLVM_ENABLE_WERROR=FALSE \
-DLLVM_TARGETS_TO_BUILD='AArch64' \
-DLLVM_ENABLE_PROJECTS='clang;openmp,polly' \
-DLLVM_DEFAULT_TARGET_TRIPLE='aarch64-apple-darwin20.1.0'
这里使用的编译器是
$ /usr/bin/clang --version
Apple clang version 12.0.0 (clang-1200.0.32.27)
Target: arm64-apple-darwin20.1.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
然后 ninja 可以成功构建 clang、clang++ 和 OpenMp 运行时并安装它们。 (很简单,针对 Arms64 的 Arm64 图像)
$ file ~/software/clang-12.0.0/arm64/bin/clang
/Users/jcownie/software/clang-12.0.0/arm64/bin/clang: Mach-O 64-bit executable arm64
$ ~/software/clang-12.0.0/arm64/bin/clang --version
clang version 12.0.0 (https://github.com/llvm/llvm-project.git 879c15e890b4d25d28ea904e92497f091f796019)
Target: aarch64-apple-darwin20.1.0
Thread model: posix
InstalledDir: /Users/jcownie/software/clang-12.0.0/arm64/bin
这一切看起来都很正常,除了当我尝试用它们编译任何东西时,它们都缺少获取系统头文件的包含路径。
$ ~/software/clang-12.0.0/arm64/bin/clang hello.c
hello.c:1:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
^~~~~~~~~
1 error generated.
所以,毕竟,
  • 有谁知道如何解决包含路径问题?
  • 有谁知道如何为编译器(和库)配置和构建一个胖二进制文件,以便 x86_64 嵌入式编译器针对 x86_64 和 aarch64 二进制文件 aarch64? (这是 Xcode clang 和 clang++ 所做的......)
    我对此的尝试最终得到了一个编译器胖二进制文件,其中两种架构都针对 x86_64 :-(

  • 谢谢

    最佳答案

    您可以设置 -DDEFAULT_SYSROOT=/path/to/MacOSX11.1.sdk在构建时或做 export SDKROOT=/path/to/MacOSX11.1.sdk在运行时。
    您需要使用 clang -arch arm64 -arch x86_64 进行编译从 clang 中获取一个胖二进制文件。您也需要为 Apple clang 执行此操作。

    关于clang - 如何为 Apple M1 构建 LLVM (clang,clang++)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65293299/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com