树莓派(二):交叉编译

交叉编译简介

         同一个体系结构可以运行不同的操作系统,同一个操作系统也可以在不同的体系结构上行。交叉编译是在一个平台上生成另一个平台上的可执行代码。由于目标机器没有编译环境,需要在宿主机上编译,然后传输到目标机器。

交叉编译工具

        树莓派:3b+,arm,32位

        宿主机:ubutun18.04,x86,64位

        交叉编译工具链:arm-linux-gnueabihf-gcc

测试代码交叉编译

#include<stdio.h>

int main()
{
        printf("hello word\n");
        return 0;
}

宿主机编译

arm-linux-gnueabihf-gcc test.c -o test_arm

目标机执行

 交叉编译含wiringPi的程序

#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
 
#define SW 0
 
void result()
{
        int num;
        if(wiringPiSetup() == -1)
        {
                printf("init pi fail\n");
                exit(-1);
        }
        pinMode(SW,OUTPUT);
        digitalWrite(SW,HIGH);
        while(1)
        {       printf("input 1 or 0:\n");
                scanf("%d",&num);
                if(num == 1)
                {
                        digitalWrite(SW,LOW);
                }
                else if(num == 0)
                {
                        digitalWrite(SW,HIGH);
                }
                else
                {
                        printf("input error,input again:\n");
                }
        }
 
}
 
int main()
{
        result();
        return 0;
}

宿主机安装wiringPI库

unzip WiringPi.zip

cd WiringPi

chmod +x build

./build

将编译好的动态库文件(树莓派上编译好的)在宿主机上做链接

上传编译好的动态库到宿主机/usr/lib

建立软连接

ln -s libwiringPi.so.2.50  libwiringPi.so
ln -s libwiringPiDev.so.2.50 libwiringPiDev.s

交叉编译

arm-linux-gnueabihf-gcc test.c -I /root/WiringPi/wiringPi -lwiringPi -L /usr/lib  -o  test

I  指定头文件目录

L  指定动态库目录

o  生成程序的名字

目标机器执行

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值