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
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重新编译打包就包含了。