Hello World

应用程序使用 Buildroot 生成的交叉编译器和 sysroot。这样编译出的程序与目标根文件系统中的 C 库保持一致。

源码

资料包示例目录:

projects/helloworld/
├── Makefile
├── setenv.sh
└── src/main.c

src/main.c

#include <stdio.h>

int main(void)
{
    printf("Hello World from StrongPi V3S\n");
    return 0;
}

编译

先完成 Buildroot 编译,然后执行:

cd ~/v3s-workspace/projects/helloworld
export BUILDROOT_OUTPUT="$HOME/v3s-workspace/buildroot-2023.02.3/output"
make

检查产物:

file build/helloworld

输出应包含 ELF 32-bitARM

手工编译命令

Makefile 实际使用 Buildroot 的编译器:

export PATH="$HOME/v3s-workspace/buildroot-2023.02.3/output/host/bin:$PATH"
export SYSROOT="$HOME/v3s-workspace/buildroot-2023.02.3/output/host/arm-buildroot-linux-gnueabihf/sysroot"
mkdir -p build

arm-linux-gnueabihf-gcc \
    --sysroot="$SYSROOT" \
    -Wall -Wextra -O2 \
    src/main.c \
    -o build/helloworld

应用依赖第三方库时,应继续使用同一个 sysroot,不要直接链接 Ubuntu 主机的 x86_64 库。

运行

scp build/helloworld root@<开发板IP>:/root/
ssh root@<开发板IP>
chmod +x /root/helloworld
/root/helloworld

正常输出:

Hello World from StrongPi V3S