铿锵++作为嵌入式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。