使用从源代码构建的 Clang 对 AArch64 进行交叉编译

问题描述 投票:0回答:1

我正在尝试在 Ubuntu 上使用 clang 交叉编译到 AArch64。我已经安装了正确的软件包,并且能够使用预打包的 clang 成功编译,但对自行构建的版本执行相同的操作会导致缺少头文件或库的错误。例如:

simulator/fileoutscalarmgr.cc:22:10: fatal error: 'fstream' file not found
   22 | #include <fstream>

我可以通过手动指定包含路径来修复这些问题(我不必使用预先打包的 clang 来执行此操作),但编译在链接时仍然失败,这是我无法修复的。

设置

clang -v
--sysroot=/usr/aarch64-linux-gnu
--target=aarch64-linux-gnu
的输出与预打包和自建 clang 版本不匹配。预打包能够自动找到所有内容: Target: aarch64-unknown-linux-gnu Thread model: posix InstalledDir: /usr/bin Found candidate GCC installation: /usr/bin/../lib/gcc-cross/aarch64-linux-gnu/12 Selected GCC installation: /usr/bin/../lib/gcc-cross/aarch64-linux-gnu/12 Candidate multilib: .;@m64 Selected multilib: .;@m64

虽然从源代码构建的无法找到交叉编译器库(使用-v时没有匹配的输出)。

如何从源代码构建 clang 来查找这些库?

c++ ubuntu clang cross-compiling arm64
1个回答
0
投票
--sysroot=/usr/aarch64-linux-gnu

会导致从源构建的 clang 起作用。仅使用

--target=aarch64-linux-gnu
时效果很好。但出于某种原因,预打包仍然可以与
sysroot
设置一起使用。
    

© www.soinside.com 2019 - 2024. All rights reserved.