haz*_*ziz 52 compiling gcc arm raspberrypi
如何为 ARM 处理器设置 GCC 以进行交叉编译?主机将在 x86_64 ( AMD64 - Ubuntu 12.04 ) 上,目标将是 ARM (Raspberry Pi 以及 Pandaboard - 将为每个单独编译)?
Mar*_*cza 53
安装gcc-arm-linux-gnueabi和binutils-arm-linux-gnueabi打包,然后只使用arm-linux-gnueabi-gcc而不是gcc编译。
你需要小心你的目标系统上有什么风格的 linux 和 binutils。最新的东西是hardfloat,在这种情况下你会这样做:
sudo apt-get install gcc-arm-linux-gnueabihf
Run Code Online (Sandbox Code Playgroud)
这带来了完整的交叉编译环境,包括 binutils。
要在构建过程中使用此 GCC,请编写:
CC=arm-linux-gnueabihf-gcc make
Run Code Online (Sandbox Code Playgroud)
64 位 ARM
对于 64 位 ARM,工具链前缀是aarch64,用法是:
sudo apt install gcc-9-aarch64-linux-gnu
aarch64-linux-gnu-gcc -o main.out main.c
Run Code Online (Sandbox Code Playgroud)
您可以使用 QEMU 在这个 C hello world 上尝试一下:
主文件
#include <stdio.h>
int main(void) {
puts("hello");
}
Run Code Online (Sandbox Code Playgroud)
进而:
sudo apt install qemu-user
qemu-aarch64 main.out
Run Code Online (Sandbox Code Playgroud)
将输出:
hello
Run Code Online (Sandbox Code Playgroud)
然后,您可以做一些有趣的事情来快速了解 ARM 实际在后台运行:
qemu-aarch64 -d in_asm,out_asm main.out //stackoverflow.com/questions/13005303/how-does-native-android-code-written-for-arm-run-on-x86/44505097#44505097在 Ubuntu 19.10 中测试。
为了在严重应用程序中的可靠性,磁盘映像提供程序还必须提供兼容的交叉编译器
尽管您可以apt方便地安装交叉编译器,但我必须警告您,除非图像提供者明确支持,否则这不一定可靠。
如果您错误地选择了交叉编译器,可能会发生以下情况:
树莓派交叉编译
特别是对于 RPI,提供的交叉编译器可从以下网址获得:https : //github.com/raspberrypi/tools并且可以按照以下说明使用:https : //raspberrypi.stackexchange.com/questions/64273/installing-raspberry- pi-cross-compiler/83215#83215
git clone https://github.com/raspberrypi/tools
export PATH="$(pwd)/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:${PATH}"
printf '#include <stdio.h>\nint main() { puts("hello world"); }\n' > hello_world.c
printf '#include <iostream>\nint main() { std::cout << "hello world" << std::endl; }\n' > hello_world.cpp
arm-linux-gnueabihf-gcc -std=c99 -o hello_world_c hello_world.c
arm-linux-gnueabihf-g++ -std=c++11 -o hello_world_cpp hello_world.cpp
Run Code Online (Sandbox Code Playgroud)
Ubuntu交叉编译
如果你想为 Ubuntu arm64 进行交叉编译,我一直找不到明确的参考资料,说明哪些交叉编译器支持哪个发行版:官方支持的 ARM 等 Ubuntu 服务器替代架构的交叉编译器是什么?
构建根
我最喜欢的替代方法是使用 Buildroot 构建自己的映像:https ://stackoverflow.com/questions/47557262/how-to-download-the-torvalds-linux-kernel-master-recompile-it-and-boot-it- wi/49349237#49349237
这将从源代码构建所有内容,包括工具链和图像,并确保所有内容都兼容。
| 归档时间: |
|
| 查看次数: |
148094 次 |
| 最近记录: |