clang ++ as drop-in g ++ replacement

时间:2015-11-05 16:27:28

标签: clang++

我正在尝试使用clang++作为G ++的替代品。我正在为AArch64编译,但是对于链接,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选择原生链接器的原因。链接失败的原因很明显,目标文件是AArch64 ELF。编译行与上面类似,但是没问题。

有什么想法吗?

PS:我是新手clang用户

1 个答案:

答案 0 :(得分:0)

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