clang++ 作为 g++ 的替代品

clang++ as drop-in g++ replacement

我正在尝试使用 clang++ 作为 G++ 的直接替代品。我正在为 AArch64 编译,但是对于 linking,clang 似乎调用了本机 (x86) /usr/bin/ld 而不是 AArch64 GCC 套件中的那个。 clang 命令行如下所示:

clang++ -target aarch64-linux-gnu -v \
  -gcc-toolchain /path/to/aarch64/gcc \
  --sysroot=/path/to/aarch64/gcc/aarch64-linux-gnu/libc \
  <some other options> <obj files>

从详细的输出中,我得到:

Ubuntu clang version 3.4-1ubuntu3 (tags/RELEASE_34/final) (based on LLVM 3.4)
Target: aarch64--linux-gnu
Thread model: posix
Found candidate GCC installation: /path/to/aarch64/gcc/lib/gcc/aarch64-linux-gnu/4.9.3
Selected GCC installation: /path/to/aarch64/gcc/lib/gcc/aarch64-linux-gnu/4.9.3
 "/usr/bin/ld" --sysroot=/path/to/aarch64/gcc/aarch64-linux-gnu/libc ...

我不明白为什么 clang 绕过选择本地 linker。 link 失败的原因很明显,目标文件是 AArch64 ELF。编译行与上面类似,但它们运行正常。

有什么想法吗?

PS: 我是新手clang用户

我设法找到了解决方案:GCC 接受 -B 选项以指向它试图找到实用程序的搜索路径。事实证明——虽然没有记录——clang 也接受这个选项。对我来说,让 -B 指向 AArch64 binutils 解决了这个问题。另一个建议是在 $PATH.

中添加 AArch64 binutils