交叉编译(全志)

一、交叉编译概念

交叉编译,就是:在一种平台上编译,编译出来的程序,是放到别的平台上运行即编译的环境,和运行的环境不一样,属于交叉的。
例:
在进行嵌入式开发时手上有个嵌入式开发板,CPU是arm的然后在x86的平台下开发,比如Ubuntu的Linux,或者是Win 10然后就需要:
在x86的平台上,(用交叉编译器)去编译你写好的程序代码
编译生成的(可执行的)程序,是放到目标开发板,arm的CPU上运行的。
这就是所谓:在x86平台上编译,在ARM平台上运行。

二 、香橙派交叉编译

1.全志交叉编译工具链下载
交叉编译工具链下载地址
在上述网址中下载
gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz即为全志Orange Pi Zero 2 所用的应用程序的交叉编译工具链
在这里插入图片描述
2.交叉编译工具链的安装
(1)解压安装包
键入tar -xf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz解压安装包
在这里插入图片描述
(2)设置环境变量
进入解压后的文件夹并进入bin目录下
aarch64-none-linux-gnu-gcc即为全志交叉的交叉编译工具
在这里插入图片描述
a.设置临时有效的环境变量
PATH 环境变量

 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rm/tool-masters/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin

games:后面为交叉编译工具链所在文件路径
b.设置永久有效的环境变量
修改工作目录下的.bashrc 隐藏文件

vi /home/RM/.bashrc

将配置的环境变量写到最后
在这里插入图片描述
保存退出后更新一下

source /home/rm/.bashrc 

完成环境变量配置

3.交叉编译测试
在上位机编写test.c文件 并用交叉编译工具 编译
test.c

#include <stdio.h>
int main()
{

        printf("hello world\n");
        return 0;
}
~      
aarch64-none-linux-gnu-gcc ./test.c -o test

在这里插入图片描述
在全志下运行编译出的test可执行文件
在这里插入图片描述

3.带WiringPi库的交叉编译

1.下载WiringPi库wiringPi库
2.将所需的库从全志拷贝到上位机:

cd /usr/local/lib/

在这里插入图片描述
libwiringPiDev.so.2.46libwiringPi.so.2.46 拷贝到上位机
并在上位机创建软连接:

 ln -s libwiringPi.so.2.46 libwiringPi.so
 ln -s libwiringPiDev.so.2.46 libwiringPiDev.so

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

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

blink.c:

#include <stdio.h>
#include <wiringPi.h>

#define NUM1 2   
#define NUM2 5   
#define NUM3 7   
#define NUM4 8   
#define NUM5 6           
int main (void)
{

        int flag;
        wiringPiSetup () ;

        pinMode (NUM1, OUTPUT) ;
        pinMode (NUM2, OUTPUT) ;
        pinMode (NUM3, OUTPUT) ;
        pinMode (NUM4, OUTPUT) ;
        pinMode (NUM5, OUTPUT) ;
        while(1){

                printf("0:关,1:开\n");
                scanf("%d",&flag);
                if(flag){
                        digitalWrite(NUM1,HIGH) ;
                        digitalWrite(NUM2,HIGH) ;
                        digitalWrite(NUM3,HIGH) ;
                        digitalWrite(NUM4,HIGH) ;
                        digitalWrite(NUM5,HIGH) ;
                }else{

                        digitalWrite(NUM1,LOW) ;
                        digitalWrite(NUM2,LOW) ;
                        digitalWrite(NUM3,LOW) ;
                        digitalWrite(NUM4,LOW) ;
                        digitalWrite(NUM5,LOW) ;

                }
        }
        return 0;
}

 ./build.sh blink.c crosstest

将编译出来的文件在全志环境下运行:
在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值