铿锵++作为嵌入式g ++替换

问题描述:

我正在尝试使用clang++作为G ++的嵌入式替换。我正在编译AArch64,但对于链接,clang似乎调用本地(x86)/usr/bin/ld而不是AArch64 GCC套件。该clang命令行的样子:铿锵++作为嵌入式g ++替换

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用户

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