一、交叉编译工具链的安装:

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

1. 临时有效

进入工作共享文件目录,我这里是:

cd /mnt/hgfs/sharefromwindows/

把想要的编译工具安装包拷贝到工作目录:

cp /mnt/hgfs/sharefromwindows/tools-master.zip .

!!!注意最后有一个 “ . ”

对安装包进行解压:

unzip tools-master.zip

进入编译工具的可编译目录:

cd /home/CLC/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

查看当前环境变量:

echo $PATH

显示当前文件夹路径:

pwd

配置环境变量:

export PATH=(echo $PATH显示的结果) + : + / + (pwd显示的结果)

我这里是:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games :/home/CLC/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

2. 永久有效

修改工作目录下(pwd)的 .bashrc 隐藏文件,配置命令终端。
在文件最后一行加上刚刚配置环境变量:
如:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/CLC/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

最后输入source指令,加载配置文件,使配置马上生效:

source 工作目录(pwd)/.bashrc

如:source /home/CLC/.bashrc

二、交叉编译服务客户端:

  1. 检查交叉编译工具的版本:

arm-linux-gnueabihf-gcc -v

  1. 生成可执行文件:

arm-linux-gnueabihf-gcc xxx.c -o xxx

  1. 把编译生成的可执行文件下载到开发板:

scp xxx pi@192.168.227.10:/home/pi
格式:
指令 文件名 开发板用户名@开发板ip地址:想要存放的绝对路径

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

  1. 正常我们先要交叉编译wiringPi库,编译出的库适合树莓派,这时候交叉编译可执行程序的时候,链接库的格式也是正确的。
  2. 通过-I -L来指定
    运行命令后我们发现此时出现报错:
/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

是因为链接的库格式不对,此时是宿主机的平台,所以出现报错信息。

  1. 建立软链接
    我们可以把树莓派的库传回虚拟机,使用树莓派的wiringPI库。
    但需要建立libwiringPi.so与libwiringPi.so.2.50之间的软链接。
    那软链接又是什么呢?
    我们可以把软链接文件理解为类似于Windows的快捷方式,在符号链接中,文件实际上是一个文本文件,其中包含的有另一个文件的位置信息。
    使用“ln -s xx(要被链接的文件) xx(软链接文件名字)”指令生成一个文件的镜像,不会占用磁盘空间。如:

ln -s libwiringPi.so.2.50 libwiringPi.so

输入“ls -l”查看软链接是否生成成功,如下图有箭头对应即成功生成:
在这里插入图片描述

  1. 建立硬链接
    与软链接指令相比,没有参数-s。
    即“ln xx(要被链接的文件) xx(软链接文件名字)”指令生成一个和源文件大小相同的文件。如:

ln libwiringPi.so.2.50 libwiringPi.so

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐