全志H616交叉编译工具链的安装与使用

这篇具有很好参考价值的文章主要介绍了全志H616交叉编译工具链的安装与使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 交叉编译的概念

交叉编译是一个平台生成另外一个平台的可执行代码,同一体系结构可以运行不同的操纵系统,同时不同的操作系统也可以在不同的体系中运行。

例如我们在Ubuntu Linux上编写orangepiZero2 的代码编译为a.out是在orangepiZero2上运行并不是在Ubuntu Linux上运行

那什么是编译呢?

编译是一个平台上生成该平台上可执行的代码。

2.为什么要交叉编译

  1. 平台上不允许或不能够安装编译工具 比如C51

  1. orangepiZero2可以安装编译器为什么还要交叉编译

因为有时候目标平台没有建立,连操作系统都没有,更不用说编译器了。操作系统也是代码也要编译。

平台运行至少需要两样东西:bootloader(启动引导代码)以及操作系统核心。这些东西都要编译。

3.宿主机(host)和目标机(target)

宿主机:编辑和编译程序的平台,一般是基于X86的PC机通常也被称之为主机。

目标机:用户开发的平台非X86平台,宿主机编译的可执行代码在目标机上运行。

4.交叉编译的工具

交叉编译器和交叉编译工具链。

  1. 使用环境

电脑:Ubuntu 18.04

开发板:orangepi-zero2

交叉编译器:aarch64-none-linux-gnu-

2.下载工具到Windows上并上传到Ubuntu虚拟机

h616 编译,arm开发,Powered by 金山文档

地址:索引 /armbian-releases/_toolchain/ |清华大学开源软件镜像站 |清华开源镜像 (tsinghua.edu.cn)

gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz即为全志Orange Pi Zero 2 所用的应用程序的交叉编译工具链

将下载好的文件上传到虚拟机桌面

3.解压

cp /home/ygl/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz /home/orangpiZero2

tar -xf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz

cd gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin

h616 编译,arm开发,Powered by 金山文档

aarch64-none-linux-gnu-gcc即为全志交叉的交叉编译工具

4.设置环境变量临时有效

输出环境变量 echo $PATH

输出结果为:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

pwd显示当前路径

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ygl/orangePiZero2/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin

5.设置永久有效

修改工作目录的 .bashrc 是一个隐藏文件,用来配置命令终端

vi /home/ygl/.bashrc

在最后一行加入

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ygl/orangePiZero2/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin

保存并推出

source /home/ygl/.bashrc 使其生效

6.测试

在虚拟机编写hello.c并用交叉编译工具编译为 test可执行文件

h616 编译,arm开发,Powered by 金山文档
h616 编译,arm开发,Powered by 金山文档

把test上传到orangepiZer2上

h616 编译,arm开发,Powered by 金山文档
h616 编译,arm开发,Powered by 金山文档

5.带wiringpi库的交叉编译

1.带wiringpi库的交叉编译如何进行

(1)正常我们要先交叉编译wiringpi库,编译出的库适合开发板,这时交叉编译可执行程序的时候,链接库的格式也是正确的。

(2)通过 -I 指定头文件-L指定库

2.将库所需的文件拷贝到上位机

进入开发板/usr/local/lib目录下拷贝libwiringPi.so.2.46到上位机的/home/ygl/orangePiZero2目录下

进入开发板/usr/local/lib目录下拷贝libwiringPiDev.so.2.46到上位机的/home/ygl/orangePiZero2目录下

3.创建软链接

软链接相当于一个快捷方式,实际上是一个文本文件存放的是另外一个文件的位置信息。软链接就是在你选定的位置上生成一个镜像,不占用磁盘空间。

ln -s 源文件 目标文件

ln -s libwiringPi.so.2.46 libwiringPi.so

ln -s libwiringPiDev.so.2.46 libwiringPiDev.so

h616 编译,arm开发,Powered by 金山文档

硬链接:

硬链接会在你选定的位置上生成一个和源文件相同大小的文件

ln 源文件 目标文件

4.将wiringpi上传到上位机

将orangepiZero2上的wiringpi-master.zip上传到上位机并解压

5. 编写脚本

编写build.sh脚本 交叉编译带wiringPi库的文件:

aarch64-none-linux-gnu-gcc $1 -I ./wiringOP-master/wiringPi -L. -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt -g -o $2

给予其执行权限:chmod +x build.sh

这样就可以交叉编译orangepiZero2平台上的代码文件了文章来源地址https://www.toymoban.com/news/detail-547943.html

到了这里,关于全志H616交叉编译工具链的安装与使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在全志H616核桃派上实现USB摄像头的OpenCV颜色检测

    在给核桃派开发板用OpenCV读取图像并显示到pyqt5的窗口上并加入颜色检测功能,尝试将图像中所有蓝色的东西都用一个框标记出来。 按照惯例,先要介绍一下opencv中常用的hsv像素格式。颜色还是那个颜色,只是描述颜色用的参数变了。h代表色调,s代表饱和度,v代表明度,比

    2024年01月23日
    浏览(33)
  • 【Orangepi Zero2 全志H616】驱动串口实现Tik Tok—VUI(语音交互)

    一、编程实现语音和开发板通信 wiringpi库源码 demo.c 二、基于前面串口的代码修改实现 uartTool.h uartTool.c uartTest.c 三、ADB adb控制指令 四、手机接入Linux热拔插相关 a. 把手机接入开发板 b. 安装adb工具,在终端输入adb安装指令: sudo apt-get install adb c. dmeg能查看到手机接入的信息,

    2024年02月21日
    浏览(32)
  • 【Orangepi Zero2 全志H616】驱动舵机控制 / Linux定时器(signal、setitimer)

    一、SG90舵机开发 舵机基本介绍 二、Linux定时器 signal 函数 setitimer 函数原型 signal、setitimer函数API调用 三、舵机 软件PWM实现 如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控制用处: 垃圾桶项目开盖用、智能小车的全比例转向、摄像头云台、机械臂等

    2024年02月05日
    浏览(36)
  • 【香橙派+DHT11】香橙派(全志H616)+ DHT11温湿度传感器的驱动教程

    最近写DHT11的代码到香橙派(全志H616)上,发现网上案例基本上都是树莓派+DHT11的居多,香橙派的少,少数找得到的代码跑起来也是不稳定或者数据相对不太准确,于是这里自己写了一篇,供大家参考和批评指正 产品概述 DHT11数字温湿度传感器是一款含有已校准数字信号输出

    2024年02月11日
    浏览(23)
  • 花费200元,我用全志H616和雪糕棒手搓了一台可UI交互的视觉循迹小车

    常见的视觉循迹小车都具备有路径识别、轨迹跟踪、转向避障、自主决策等基本功能,如果不采用红外避障的方案,那么想要完全满足以上这些功能,摄像头、电机、传感器这类关键部件缺一不可,由此一来小车成本也就难以控制了。 但如果,有这样一款视觉循迹小车,它可

    2024年02月21日
    浏览(32)
  • 【嵌入式Linux项目】基于Linux的全志H616开发板智能家居项目(语音控制、人脸识别、安卓APP和PC端QT客户端远程操控)有视频功能展示

    目录 一、功能需求 二、开发环境 1、硬件: 2、软件: 3、引脚分配: 三、关键点 1、设计模式之工厂模式 2、线程 3、wiringPi库下的相关硬件操作函数调用 4、语音模块的串口通信 5、摄像头的实时监控和拍照功能 6、人脸识别 7、qt程序跨平台运行(编译成安卓APP) 四、编译和

    2024年02月15日
    浏览(44)
  • IMX6ULL学习笔记(4)——安装并使用交叉编译工具链

    本地编译 :编译器和目标程序都是相同架构的编译过程。 交叉编译 :编译器运行在x86架构平台上,编译生成ARM架构的可执行程序,这种编译器和目标程序运行在不同架构的编译过程。 arm-linux-gnueabihf-gcc: 名称中的Linux表示目标应用程序是运行在Linux操作系统之上的,例如前

    2024年02月04日
    浏览(26)
  • 交叉编译工具安装

    下载链接一:Linaro公司提供的arm编译器 Linaro Releases 下载链接二:ARM公司提供的arm编译器 Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer 下载链接三:某博主提供的百度网盘 【Linux开发】arm-linux-gnueabihf-gcc下载 - ZhangPYi - 博客园 (cnblogs.com) 说明:arm-linux-gcc工具链下载(转载

    2024年02月07日
    浏览(29)
  • Ubuntu 交叉编译工具链安装

    ARM 裸机、Uboot 移植、Linux 移植这些都需要在 Ubuntu 下进行编译,编译就需要编译器,我们在第三章“Linux C 编程入门”里面已经讲解了如何在 Liux 进行 C 语言开发,里面使用 GCC 编译器进行代码编译,但是 Ubuntu 自带的 gcc 编译器是针对 X86 架构的!而我们现在要编译的是 ARM 架

    2024年02月15日
    浏览(39)
  • WSL下gcc for arm交叉编译链的系统配置

    以下交叉编译工具名称和就都是举例 1. 永久生效 如需永久修改,请修改用户配置文件。 注意:如果不会使用vim命令,可以使用图形化的编辑工具,执行: 在行尾添加或修改,加上下面几行(第3行第4行为一行命令): 设置完毕后,要执行 source ~/.bashrc 命令使其生效,这条命令

    2024年02月07日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包