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
我正在尝试使用 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
.