小编Mik*_*sen的帖子

针对 Raspberry pi 3B+ 的 Clang 交叉编译

我一直在尝试建立一个 clang 交叉编译器工具链,将 C/C++ 主机 x86-64-linux-gnu 编译为目标 arm-linux-gnueabihf。输出二进制文件旨在在具有armv7 cortex-53a CPU的树莓派3B+上运行。raspberry pi 操作系统相当于 Raspian 的 debian-buster,因此 apt 中的默认 clang 是 clang-7.0.1。

我希望能够完成一个 clang 交叉编译器,可以用

clang++ hello_world.cpp
Run Code Online (Sandbox Code Playgroud)

默认情况下,使用正确的 arm-linux-gnueabihf 包含和库路径进行编译和链接。对我而言,使用的链接器并不重要。

我首先按照https://solarianprogrammer.com/2019/05/04/clang-cross-compiler-for-raspberry-pi/和 TLDR 上的指南进行操作;它下载具有适当版本 (7.0.1) 的 llvm-project,使用 cmake 标志,使用 cmake 和 ninja 构建 LLVM、clang、compiler-rt、lld、libunwind 和 polly:

-DCMAKE_BUILD_TYPE=Release
-DLLVM_BUILD_DOCS=OFF -DCMAKE_INSTALL_PREFIX=/usr/local/cross_armhf_clang_7
-DCMAKE_CROSSCOMPILING=True -DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf 
-DLLVM_TARGET_ARCH=ARM 
-DLLVM_TARGETS_TO_BUILD=ARM
Run Code Online (Sandbox Code Playgroud)

但是当尝试使用新构建的 clang 编译 libcxxabi 和 libcxx 时,它找不到正确的 libstdc++:

 CMake Error at /usr/local/cross_armhf_clang_7/lib/cmake/llvm/CheckCompilerVersion.cmake:38 (message):
   Host Clang must be able to find libstdc++4.8 or newer!
Call Stack (most recent call …
Run Code Online (Sandbox Code Playgroud)

c++ linux cmake clang raspberry-pi

5
推荐指数
0
解决办法
974
查看次数

标签 统计

c++ ×1

clang ×1

cmake ×1

linux ×1

raspberry-pi ×1