Hello World 编译和上传运行

本章节将讲解如何使用电脑(上位机)交叉编译一个打印 Hello Word 的小应用,并将其上传到开发板(下位机)上运行起来,打印出 hello word。

准备编译环境

我们使用的编译链放在了源码的 prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin中。 编译时需要的库文件、头文件放在了out/t113-mq_r/staging_dir/target

为了方便,我们先将编译链加入PATH环境变量,再将需要的库文件、头文件目录加入STAGING_DIR环境变量。 我们可以制作一个文件方便每次运行

setenv文件

我们建立helloworld文件夹,将这个setenv文件放进去。 以下内容保存为setenv文件,将其中的zqboard换成你的用户名

PATH=$PATH:/home/zqboard/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin
export STAGING_DIR=/home/zqboard/Tina-Linux/out/t113-mq_r/staging_dir/target

应用并验证编译环境

cd ~/helloworld

# 加载环境变量
source setenv

# 检查是否生效
arm-openwrt-linux-gcc -v

gcc是否生效

main.c

在helloworld文件夹下创建文件main.c,并写入以下内容

#include <stdio.h> 

int main(int argc, char const *argv[]) 
{ 
    printf("Hello World\n"); 
    return 0; 
}

编译helloworld

使用如下命令编译helloworld

arm-openwrt-linux-gcc main.c -o helloworld

成功后,会生成helloworld文件 编译结果

下载到开发板

有多种多样的方法可以把这个可执行文件放到开发板上,这里提供三种常用的方法

使用adb工具下载

在操作系统上(windows,linux,mac os 都可以 )安装好adb,然后使用usb连接开发板。 adb的安装,可以参考 adb安装教程

然后通过如下方式

# 推送程序到开发板
adb push helloworld /mnt/UDISK/

# 赋予可执行权限
adb shell chmod +x /mnt/UDISK/helloworld

# 执行程序,然后就能看到打印了
adb shell /mnt/UDISK/helloworld

使用ssh

开发板通过以太网或WIFI联网的情况下,可以通过scp命令直接拷贝到开发板

scp ./helloworld root@192.168.5.155:/mnt/UDISK

使用U盘拷贝

将文件拷贝到U盘,然后将U盘插到开发板,会自动识别,目录: /mnt/UDISK/

运行

将helloworld直接在开发板上运行,就可以看到如下结果: 运行结果

Tina 增加 Package

在 Tina 里新增一个 Hello World 软件包,使用 Tina 编译 Hello World 并一同打包进入 Tina Linux。

这个方法不但适用于 Hello World 程序,同样也适用于所以希望将自己的软件包整合进入 Tina Linux 的情况。通过这个方法,可以很方便的管理多库编译链接,解决编译链接的难题,也可以提供Tina Linux 的底层调用库函数的接口,免去单独交叉编译的麻烦。

参考链接:Tina 应用打包、配置 - V853

临时加库方法

调试过程中需要临时加入库,由于系统目录是read only,所以不能直接copy进去。可以使用如下方法

export LD_LIBRARY_PATH=/mnt/UDISK/lib:$LD_LIBRARY_PATH

调试好后可以放package/base-file/files/lib重新编译打包就包含了。