首页 > 解决方案 > clang-11 说它支持 arm64_32 但是当我尝试使用“-march=arm64_32”时它说它不支持

问题描述

我正在尝试为 aarch64 的新板编译一个需要使用 32 位指针和整数(很长的非常令人沮丧的故事)的程序。我尝试clang-11 -print-targets了一个并得到了:

$ clang-11 -print-targets
  Registered Targets:
    aarch64    - AArch64 (little endian)
    aarch64_32 - AArch64 (little endian ILP32)
    aarch64_be - AArch64 (big endian)
    amdgcn     - AMD GCN GPUs
    arm        - ARM
    arm64      - ARM64 (little endian)
    arm64_32   - ARM64 (little endian ILP32)
    armeb      - ARM (big endian)
    avr        - Atmel AVR Microcontroller
    bpf        - BPF (host endian)
    ...

但是当我尝试编译一个简单的测试程序时,我得到:

/usr/bin/clang-11 -g <redacted>/arm_pointer_size/arm_pointer_size.c -march=arm64_32 --target=arm64-linux-gnueabihf -fuse-ld=lld -o <redacted>/arm_pointer_size/arm_pointer_size

clang: error: the clang compiler does not support '-march=arm64_32'

当我删除-march=arm64_32构建作品时。如果我尝试将“_32”放在三元组中,我会得到:

/usr/bin/clang-11 -g <redacted>/arm_pointer_size/arm_pointer_size.c --target=arm64_32-linux-gnueabihf -fuse-ld=lld -o <redacted>/arm_pointer_size/arm_pointer_size 

clang: error: unknown target triple 'arm64_32-unknown-linux-gnueabihf', please use -triple or -arch

我正在使用来自 Debian 存储库的 llvm/clang,但似乎这无关紧要。为什么 clang 说它的注册目标包括 arm64_32 却不支持呢?

标签: clinuxclangcross-compiling

解决方案


推荐阅读