树莓派(Linux系统通用)交叉编译(环境搭建、简单使用),含Ubuntu系统wiringPi库安装使用

概念

交叉编译是指在一台计算机上编译运行在另一台计算机上的程序。(编译是指,在一个平台上生成在该平台上的可执行程序)通常情况下,编译器和目标平台的架构是不同的,例如,在一台x86平台上编译运行在ARM平台上的程序。(单片机常用KEIL上面编译代码就是交叉编译)比如我们在Linux环境上编写树莓派的使用代码,生成可执行代码,下载到树莓派中运行的这一个过程。

交叉编译需要使用交叉编译工具链,包括交叉编译器、库文件、头文件等。交叉编译器可以将源代码编译成目标平台的可执行文件,而库文件和头文件则提供了目标平台的系统调用和函数定义等信息。

交叉编译通常用于嵌入式系统开发、操作系统开发、科学计算等领域。通过交叉编译,可以在一台通用的计算机上快速编译出多个平台的程序,提高开发效率和代码可移植性。 

为什么要使用 

  1. 硬件平台限制:如果您的程序需要在特定的硬件平台上运行,但您的开发计算机不具备该硬件平台,那么您可以使用交叉编译来生成该平台上的可执行文件。

  2. 软件依赖性:如果您的程序依赖于特定的库或工具链,而这些库或工具链只适用于另一种操作系统或计算机架构,那么您可以使用交叉编译来生成该平台上的可执行文件。

  3. 提高编译效率:交叉编译可以在一台计算机上并行编译多个目标平台的程序,从而提高编译效率和节省时间。

  4. 安全性:交叉编译可以将程序的源代码和编译器隔离开来,从而减少了潜在的安全风险。

总结:平台上不允许或不能够安装我们所需要的编译器,比如C51 ;

1.因为目的平台上的资源贫乏,无法运行我们所需要编译器

2.树莓派是不是就不需要交叉编译?
错。也要树莓派有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。操作系统也是代码,也要编译!
平台运行需要两样至少东西:bootloader(后动引导代码)以及操作系统核心
宿主机(host):编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。
目标机(target):用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。 

工具链的安装

 下载工具

 下载链接https://github.com/raspberrypi/

把文件弄到Ubuntu里面

下载好之后在Ubuntu系统里面开启共享文件 

 这里我已经添加,道友们可以点击添加按钮,找到下载的工具包路径,或者自己创建一个文件夹把刚刚下载的包放到里面,然后选择路径,点击确定就可以。

开始安装

默认共享文件路径在 , xxx表示你创建的共享文件夹名字

/mnt/hgfs/xxx/

通过cd /mnt/hgfs/xxx/ 到该目录下;ls 指令可以看到tools-master.zip

使用unzip tools-master.zip解压如果解压不成功可以加权限 sudo unzip tools-master.zip

然后cd  tools-master/ 再用 ls 查看到arm-bcmxxx文件,我当时下载的是arm-bcm2708

然后cd arm-bcm2708/ 再用 ls 看到gcc-linaro-arm-linux-gnueabihf-raspbian-x64如果你的环境是32位的使用不带x64的就可以。

继续使用图中指令

 可以看到能够使用的一下东西。

 环境路径变更

从上面知道,想要使用这个工具要到的路径太深,不可能每次使用都到这个路径。我们需要改变使用路径,在什么路径底下都可以使用。

临时变更

使用echo $PATH 显示当前工具的环境变量路径

再使用指令 pwd 看变量位置

使用指令 export PATH= 将图中花圈路径的拼接

回到主目录查看是否成功,图中这样能够找到,打开对应文件就是成功

永久变更

临时的肯定不好,每次开机都要重新配置

修改隐藏的配置文件 .bashrc 

使用图中指令找到最开始的目录

然后

 拉到最后面,添加刚才的内容,保存退出

更新一下 ,就可以了

 分享一个技巧:输入指令history 可以查看到你使用过的所有指令。

使用

 创建一个文件test1.c

如果只是gcc 编译,只能在x86-64环境下执行编译和的程序

使用arm-linux-gnueabihf-gcc test1.c -o test_1 能够看到可以在ARM-Linux平台使用

通过scp test_1 pi@192.18.1.41:Desktop 把可执行程序移动到树莓派。

注意:pi是我的树莓派用户名,192.168.1.41是我的树莓派地址 

然后选择yes进入,输入你的树莓派密码。 

 到树莓派查看是否成功,图中能够找到test_1证明成功了, ./test-1 就可以执行

 然后你会发现运行失败

原因是没有链接到编写代码环境的地址

上图是编译环境的地址192.168.91.128 

 在编译环境这边:  ./test1 192.168.91.128 8880

注意:test1是在编译环境下gcc编译的  地址是编译环境地址  8880是端口号(自己设置)

 树莓派端: ./test_1 192.168.91.128 8880

乌班图系统wiringPi库安装 

方法1 

 下载链接GitHub - WiringPi/WiringPi: Gordon's Arduino wiring-like WiringPi Library for the Raspberry Pi (Unofficial Mirror for WiringPi bindings)

 

下载好之后,直接通过共享文件夹发到Ubuntu里面,位置自己选择。 

找到图中 wiringpi-master.zip

解压unzip  WringPi-master.zip

到文件里面 cd WiringPi-master

通过 ls 看到 INSTALL   README.md 里面有发布链接,安装方法

直接 ./build 就可以安装,下图是成功安装的返回

 

 但是这个方法不好用,有的人可能使用不了。推荐下面的方法

 

方法2

通过树莓派拷贝一份发到乌班图里面,一般wiringPi在  cd /usr/lib 路径

在图中找到  libwiringPi.so.2.52  

通过指令: sudo scp libwiringPi.so.2.52 qzf@192.168.91.255:/home/qzf/lessonPI 发到树莓派

 

qzf@192.168.91.255:/home/qzf/lessonPI这一部分是我的乌班图用户名,地址,拷贝位置

创建软链接:

软链接相当于windows桌面图标快捷方式, 在符号连接中,文件实际上是一个文本文件,其中包含的有另一个文件的位置信息

指令: ln -s libwiringPi.so.2.52 libwiringPi.so     参数是要被链接的文件,链接生成的文件名

 检查如图标示

如果去掉 -s 生成的是硬链接。

至于软硬链接的概念这里就不展开讨论了。网上非常的多。 

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
搭建 Linux树莓派交叉编译环境,需要完成以下几个步骤: 1. 安装交叉编译工具链 在 Linux使用交叉编译工具链来编译适用于树莓派的程序。可以在 Raspberry Pi 官网上下载适用于 Linux交叉编译工具链。 2. 配置环境变量 将交叉编译工具链的路径添加到系统的环境变量中,以便在命令行中使用。 例如,在 Ubuntu 系统中,可以编辑 /etc/environment 文件,添加以下代码: ``` export PATH=$PATH:/path/to/cross-compile-toolchain/bin ``` 将 /path/to/cross-compile-toolchain 替换为实际的交叉编译工具链路径。 3. 编写交叉编译脚本 编写一个简单交叉编译脚本,以便能够快速编译适用于树莓派的程序。 例如,在使用 CMake 构建程序时,可以编写一个名为 raspberrypi.cmake 的脚本文件,将以下代码添加到 CMakeLists.txt 文件中: ``` set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_C_COMPILER /path/to/cross-compile-toolchain/bin/arm-linux-gnueabihf-gcc) set(CMAKE_CXX_COMPILER /path/to/cross-compile-toolchain/bin/arm-linux-gnueabihf-g++) set(CMAKE_FIND_ROOT_PATH /path/to/cross-compile-toolchain/arm-linux-gnueabihf/sysroot) ``` 将 /path/to/cross-compile-toolchain 替换为实际的交叉编译工具链路径。 4. 编译程序 使用交叉编译工具链编译程序。 例如,在使用 CMake 构建程序时,可以在命令行中运行以下命令: ``` mkdir build cd build cmake .. -DCMAKE_TOOLCHAIN_FILE=raspberrypi.cmake make ``` 这将使用 raspberrypi.cmake 脚本文件来构建程序,并使用交叉编译工具链来编译程序。 完成上述步骤后,就可以在 Linux 上搭建树莓派交叉编译环境。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漏洞嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值