树莓派的交叉编译和编译

文章介绍了交叉编译的概念,即在不同平台上生成另一平台的可执行代码,比如在Windows上的Keil进行C51代码的交叉编译。它在资源有限或无操作系统的目的平台上是必要的。文章以树莓派为例,详细阐述了树莓派的交叉编译过程,包括安装交叉编译器、配置环境变量,并提到了如何处理带wiringPi库的代码交叉编译问题,需要将库从树莓派拷贝到Ubuntu并创建软链接以正确链接库文件。
摘要由CSDN通过智能技术生成

1.交叉编译和编译

        交叉编译:在一个平台上生成另一个平台上的可执行代码。

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

如:

1.C51 交叉编译的发生在keil(集成环境上面):在windows上面编写C51代码,编译成可执行代码,如xxx.hex,在C51上运行

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

2.为什么需要交叉编译?

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

        平台上不允许或不能安装我们需要的编译器,如C51

2.因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。

3.树莓派需要交叉编译吗?

树莓派-也需要交叉编译

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

4.宿主机,目标机和交叉编译工具链

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

目标机(target): 用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。

交叉编译器(交叉编译工具链):交叉编译需要用到的工具

5.树莓派交叉编译器的安装

工具是针对执行二进制文件的平台而选择,对于树莓派有专门的交叉编译工具:GitHub - raspberrypi/tools,选择branch:master版本,右侧clone or download,点击download zip下载.

点击tool

下载tool-master.zip

在ubuntu下之下以下操作:

unzip tool-master.zip

cd arm-bcm2708/

cd  gcc-linaro-arm-linux-gnueabihf-raspbian-x64

cd bin

ls -l

./arm-linux-gnueabihf-gcc -v

配置临时环境变量:

export PATH=$PATH:/home/duyong/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

永久有效:

编辑配置文件,并使之生效。

sudo vi /home/duyong/.bashrc

copy以下代码:

Export PATH=$PATH:/home/duyong/SYSTEM/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

生效:
source /home/duyong/.bashrc

检查交叉编译工具链工具对不对:arm-linux-gnueabihf-gcc -v

(4.8.3)

编译:gcc test.c -o  test_1 

交叉编译:arm-linux-gnueabihf-gcc test.c -o test_2

传输:scp test_2 pi@192.168.1.3:/home/pi/hardwareSoft/

test_1只能在ubuntu运行,test_2只能在树莓派上运行。

可以通过指令:file test_1v 查看文件的属性;

6.带wiringPi库的代码怎么交叉编译

下载wiringPi放到lessonPI

正常我们要先交叉编译wiringPi库,编译的库适合树莓派,这时候交叉编译可执行程序的时候,链接库的格式也是正确的

-I :指定寻找头文件的名称

-L 来指定库的路径,不指定的话默认在优先从usr/lib  usr/local/lib中寻找库;

./build编译wiringPi库,但是链接的库的格式不对

解决办法:把树莓派的wiringPi库拿来用

scp /usr/lib/libwiringPi.so.2.50 duyong@192.168.1.8:/home/duyong/lessonPI

创建软链接:ln -s  libwiringPi.so.2.50  libwiringPi.so

arm-linux-gnueabihf-gcc demo2.c -I /home/duyong/lessonPI/WiringPi/WiringPi -lwiringPi  -L ./ -o mainPro

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
搭建 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 上搭建树莓派交叉编译环境。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值