交叉编译工具链安装与应用、带wiringPi库的交叉编译

交叉编译工具链的安装

不同平台用到的工具链不一样,这里以树莓派为例

首先去网址上下载安装包  Raspberry Pi · GitHub

 将压缩包拷贝到Linux  工作目录下,解压压缩包   unzip tools-master.zip 

 切换到bin目录下,比如我的是

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

 arm-linux-gnueabihf-gcc编译出来在树莓派执行的程序

然后需要做环境变量的配置,否则上面的命令不可用

临时有效  配置环境变量

echo  $PATH   查看当前环境变量

 获取当前目录(pwd)

 export  PATH = $PTAH /xxxx/xxx   添加环境变量 (当前环境变量路径到/games: 后面加上当前目录的路径)

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/CLC/raspberrypi/lessonPi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

配置完成就可以在其它目录使用arm-linux-gnueabihf-gcc  命令了,但是因为是临时配置的环境变量,所以在其它终端不可用。

这里使用arm-linux-gnueabihf-gcc -v查看版本验证环境是否配置正确

 换其它终端就找不到该命令

 永久有效 配置环境变量

修改工作目录下的.bashrc 隐藏文件(配置命令终端的)

进入工作目录,编辑.bashrc  文件,在最后一行加入环境变量

 source  .bashrc   加载配置文件,马上生效配置。然后就可以在任何终端使用命令了。

交叉编译应用

编译:arm-linux-gnueabihf-gcc  xxx   -o   xxx

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

scp arm-clientPi pi@192.168.1.106:/home/pi/fromLinux

指令  文件名   开发板用户名@开发板地址:开发板的绝对路径

带wiringPi库的交叉编译

在Ubuntu安装wiringPi库

下载拷贝到Ubuntu,查看文件INSTALL

  

 运行./build   ,并查看目录/usr/local/lib 

 编译文件验证

 没有包含头文件,查看wiringPi.h

 再次编译链上文件的路径

 链库编译

 这里错误是因为安装的wiringPi库(是宿主机的平台)只适用于X86(arm-linux-gnueabihf-gcc不认识x86平台的库),链接的库的格式不对。

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

查看树莓派wiringPi库

 拷贝到树莓派

 注意,libwiringPi.so是软链接文件,在拷贝到Ubuntu后软链接消失,需要创建

 

创建软链接

ln  -s   被链接的文件   软链接的文件

-s:建立软链接文件。如果不加 “-s” 选项,则建立硬链接文件;
-f:创建并覆盖。如果目标文件已经存在,则删除目标文件后再建立链接文件;

出现错误,无法创建软链接,文件已存在,解决办法,强制创建软链接

软链接创建完成后使用树莓派的wiringPi库在Ubuntu编译(-L指定动态库的搜索路径)生成在arm平台上的可执行程序

 

软链接和硬链接

概念及创建

软链接

当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在其它的目录下用ln命令链接(link)就可以,不必重复的占用磁盘空间。

特点:

1.软链接文件类似于Windows的快捷方式。
2.是一个特殊文件,在符号链接(软连接)中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
3.它只会你选定的位置上生成一个文件的镜像,不会占用磁盘空间

硬链接

硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个链接并不影响索引节点本身和其它的链接,只有当最后一个链接被删除后,文件的数据块及目录的链接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬链接文件均被删除。


这里有两点要注意:

第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;

第二,ln的链接又软链接 和硬链接
两种,软链接就是ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

◣星河◢

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

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

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

打赏作者

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

抵扣说明:

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

余额充值