如何使用clang进行aarch64的交叉编译?

4
我希望使用clang进行aarch64的交叉编译,但是出现了错误。
我在Ubuntu 16.04上工作。
我使用以下命令编译源文件:
clang -target aarch64 -B/home/xxx/op-tee-v8/toolchains/aarch64/aarch64-linux-gnu/bin/ 1.cpp

我需要跨平台编译的文件是cpp。

然后我遇到了一个错误:

/home/xxx/op-tee-v8/toolchains/aarch64/aarch64-linux-gnu/bin/ld: unrecognised emulation mode: elf_x86_64

Supported emulations: aarch64linux aarch64elf aarch64elf32 aarch64elf32b aarch64elfb armelf armelfb aarch64linuxb aarch64linux32 aarch64linux32b armelfb_linux_eabi armelf_linux_eabi

collect2: error: ld returned 1 exit status

clang: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
2个回答

0

尝试安装binutils-aarch64-linux-gnu,这将安装所需的正确链接器。您可能还需要安装libc6-arm64-cross、libc6-dev-arm64-cross和crossbuild-essential-arm64。


0
  • aarch64 ~= arm64
  • 在Mac上,使用clangarm64构建
    • clang -arch arm64 main.c -o main_arm64
  • 或许你应该这样做:
    • clang -arch arm64 ... 1.cpp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接