嵌入式设备通常无法自己编译自己运行的程序,这时候就需要有一台主机来负责编译程序。但是主机的平台和嵌入式平台是不一样的,芯片的指令集也不一样。这时候就需要用到交叉编译,也就是在主机上安装嵌入式平台的 SDK,来进行编译开发。
一、前提条件
- Linux 环境(虚拟机也可以)
- SDK, 我这里用的版本是
en.SDK-x86_64-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gz,下载完成后解压
二、指令
- 进入 SDk 目录
1 | chmod +x <image>-<distro>-<machine>-<host machine>-toolchain-<Yocto release>-<version>.sh |
三、打印 hello world
The SDK environment setup script must be run once in each new working terminal in which you cross-compile:
创建一个 c 文件
- vim hello.c
代码如下:
1
2
3
4
5
6
int main(int argc, char* argv)
{
printf("hello, world.\n");
return 0;
}编译
- $CC -o hello hello.c
拷贝到 STM32 MPU 开发板
- scp hello ip:/home/root
运行
- ./hello

- ./hello