树莓派(香橙派)交叉编译

news2024/9/23 1:30:57

目录

1、交叉编译是什么

2、为什么要交叉编译?

3、交叉编译需要用到什么工具?

4、(香橙派)交叉编译工具链的安装

5、 交叉编译服务端客户端

6、 带wiringPi库的交叉编译如何进行


1、交叉编译是什么


        交叉编译是在一个平台上生成另一个平台上的可执行代码。
                我们再windows上面编写C51代码,并编译成可执行代码,如xx.hex,
                是在c51上面运行,不是在windows上面运行。

                 我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out,
                是在树莓派上面运行,不是在ubuntu linux上面运行。

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

        C51 交叉编译的发生在keil(集成环境上面)
        stm32         

2、为什么要交叉编译?


        平台上不允许或不能够安装我们所需要的编译器比如C51
        1.因为目的平台上的资源贫乏,无法运行我们所需要编译器
        2.树莓派是不是就不需要交叉编译?
            错。也要  树莓派有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。
            操作系统也是代码,也要编译!

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

    宿主机(host) :编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。
    目标机(target):用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。

3、交叉编译需要用到什么工具?


        交叉编译器、交叉编译工具链


4、(香橙派)交叉编译工具链的安装

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

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


     pwd 获得路径:
        /home/zzx/lessonPI2/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin
     echo $PATH 获得当前环境变量的值:
        /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:

临时有效,配置环境变量
        PATH 环境变量

        export PATH

        =/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zzx/lessonPI2/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin
永久有效,配置环境变量

        修改工作目录下的.bashrc 隐藏文件,配置命令终端的
         vi /home/zzx/.bashrc 
         在文件最后一行加入:
        export PATH            =/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zzx/lessonPI2/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin

        source /home/zzx/.bashrc 加载配置文件,马上生效配置。

经过交叉编译前后的对比

5、 交叉编译服务端客户端


        交叉编译:
            检查下交叉编译工具对不对:
                aarch64-none-linux-gnu-gcc -v
                4.8.3

           aarch64-none-linux-gnu-gcc  xxx.c -o xxx

        如何把编译生成的可执行文件下载到开发板:
        scp xxx orangepi@192.168.10.112:/home/orangepi
        指令  文件名  开发板用户名@开发板地址:开发板的绝对路径


6、 带wiringPi库的交叉编译如何进行


     

   1. 正常我们先要交叉编译wiringPi库,编译出的库适合树莓派,这时候交叉编译可执行程序的试试,链接库的格式也是正确的。
        2. 通过-I -L来指定
         
         因为链接的库的格式不对,是宿主机的平台,出现以下错误
          arm-linux-gnueabihf-gcc demo2.c -I /home/CLC/lessonPI/WiringPi/wiringPi -lwiringPi
        /home/CLC/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lwiringPi
        collect2: error: ld returned 1 exit status

        把树莓派的wringPI库拿上来用

        软链接
        参考文章: https://www.cnblogs.com/zhangna1998517/p/11347364.html
        概念:
             1. 软链接文件有类似于Windows的快捷方式。
             2. 在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
             3. 你选定的位置上生成一个文件的镜像,不会占用磁盘空间
        如何生成:
        ln -s libwiringPi.so.2.50 libwiringPi.so 
        指令 参数   要被链接的文件    软链接文件名字

        硬链接:ln libwiringPi.so.2.50 libwiringPi.so 
                它会在你选定的位置上生成一个和源文件大小相同的文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/732710.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

叠加态和超级定位:量子世界的奇特现象

亲爱的读者, 欢迎回到我们的量子力学系列文章。在前几篇文章中,我们介绍了量子力学的起源、基本概念以及波函数作为描述量子世界的数学工具。今天,我们将深入探索量子力学中的奇特现象,包括叠加态和超级定位。 在量子力学中&…

sklearn高级功能

包括构造数据集、正则化、交叉验证 1.构造数据集 from sklearn import datasets import matplotlib.pyplot as plt #构造数据 #用函数来建立 100 个 sample,有一个 feature,和一个 target,这样比较方便可视化。 X, y datasets.make_regres…

Python开发项目基于大数据的反电信诈骗管理系统设计与实现

博主介绍:擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例…

行为型模式-策略模式(一)

今天就说一说设计模式中的策略模式,从名字来讲,意思就是,对应不同的情况,就有一种解决问题的办法,不同的情况,就有不同的应对方法,这就是策略模式,非常的智能化。 也可以参考菜鸟 …

leetcode 876.链表的中间结点(快慢指针问题)

⭐️ 往期相关文章 💫 链接1:leetcode 206.反转链表 💫 链接2:leetcode 203.移除链表元素 💫 链接3:数据结构-手撕单链表代码详解 ⭐️ 题目描述 🌟 leetcode链接:链表的中间结点 …

手把手教大家实现 npm 包,并发布 npm 仓库,搭建文档(一)

我就知道你会点进来看看,吹牛逼的,哈哈,不过呢,我正在朝着这个方向前进,希望大家给我鼓励鼓励,希望点击进来小伙伴点点赞,点点关注。 说实话,写这个项目的目的,从我自己…

ModaHub魔搭社区:阿里云CTO周靖人:魔搭社区将成为中国最大的“大模型自由市场”

7月7日消息,阿里云CTO周靖人在上海世界人工智能大会上宣布了阿里云的发展计划。 他表示,阿里云将致力于推动中国大模型生态的繁荣,并为大模型创业公司提供全方位的支持。阿里云魔搭社区已经聚集了180万AI开发者和900多个优质AI模型&#xff0…

springboot---定时任务实现

定时任务 1. scheduled注解实现1.1. 用法1.2. 参数详解1.2.1. cron1.2.2. zone1.2.3. fixedDelay1.2.4. fixedDelayString1.2.5. fixedRate1.2.6. fixedRateString1.2.7. initialDelay1.2.8. initialDelayString 1.3. 示例 1. scheduled注解实现 1.1. 用法 任意类中创建一个方…

ASL-QPSO|改进量子粒子群自适应算法及其实现(Matlab)

作者在前面的文章中介绍了量子粒子群算法,量子粒子群算法不但继承粒子群算法的优点,还有它自身计算模型更加简洁,控制参数更少等更加突出的优势,但依然存在着一定的局限性。 例如也会存在着早熟收敛的问题,随着迭代次数…

金属工件表面粗糙度测量方法概述

引言: 在加工零件等的表面上,存在着不同高低、深度和间隙凹凸等的复杂形状。其中,深度且间隔较小的表面坑洼不平被称为表面粗糙度。 产品外包装、汽车仪表盘或是触摸屏等加工零件表面的“闪闪发亮”“粗糙无光泽”等外观区别,就源自这个表面粗糙度的差异。 此外,拿在手里…

Linux分布式应用 Zabbix监控软件 概述 安装

zabbix 是什么? ●zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 ●zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 ●…

ESP32(掌控板) 内置图片与动画显示

ESP32(掌控板) 内置图片与动画显示 本程序实现了对Mind的MicroPython库内置的图片和动画的显示。Mind上的MicroPython库由于在显示上采用缓存形式,不易出现屏幕闪烁,但对数字显示的支持较差。本程序通过机械按键进入图片选择界面&…

我的华为玩机技巧携手晤对科技,共探创意玩法与新可能

众所周知,华为作为全球领先的智能手机品牌,一直以来致力于提供最好的用户体验,而“我的华为”App,作为华为设备出厂自带的默认应用之一,为华为用户提供丰富的功能,涵盖HarmonyOS 升级、服务、玩机技巧、花粉…

Django学习笔记

Django学习笔记 初识Django安装Django创建Django项目APP启动Django快速上手再写一个页面templates模板静态文件 模板语法请求和相应登录案例 数据库操作安装第三方模块ORM Django官网 : https://docs.djangoproject.com/en/4.2/Django中文文档参考网站:https://yiyi…

java 并发 随笔7 ThreadLocal源码走读

0. 刚刚见了下老朋友,桌球撞起来的感觉很爽 可以看到 Thread 是内部是维护了局部变量的(thread-local-map) 1. 源码走读 很多的细节都在代码块中备注了 package java.lang;// 现在回来起来,很多经验不太丰富的人之所以在接触、学习java.lang.thread的…

初识定时任务

了解定时任务 我们在开发系统的时候,常常会遇到需要定时的去执行一些业务,例如:定时备份数据库、定时生成报告、定时发送通知、定时批处理等各种自动化操作。 那此时我们就需要通过使用定时任务来完成这些业务需求。并且在日常的开发中定时任…

【从删库到跑路】一文带你明白MySQL数据库的 事务 操作

🎊专栏【MySQL】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 文章目录 🍔事务⭐简介⭐普通操作——不使用事务&#x1f3…

深入流行推荐引擎第一部分:推荐系统基础

深入流行推荐引擎第一部分:推荐系统基础 1. 推荐引擎及其类型什么是推荐引擎?基于内容的推荐(Content-Based Recommendations)协作推荐(Collaborative Recommendations)混合动力推荐(Hybrid Rec…

【stability.ai】SDXL:改进高分辨率图像合成的潜在扩散模型

github:https://github.com/Stability-AI/stablediffusion 试用: https://clipdrop.co/stable-diffusion https://dreamstudio.ai/ 介绍 近年来,深度生成建模在自然语言、音频和视觉媒体等各个数据领域取得了巨大的突破。本文将重点关注视…

计算机网络 day4 IP地址的两部分-A、B、C、D、E五类IP地址-私有地址-子网掩码-DNA服务器-域名解析服务

目录 三创网络拓扑结构图: 普通家庭网络拓扑结构图:(也可以直接使用 子母路由器 (母:无线路由器)(子:信号放大器、中继器)) 网络层:&#xff0…