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