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-bit、ARM。
手工编译命令¶
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