交叉编译之软链接和硬链接

带WiringPi库的代码如何在上位机进行交叉编译?

1.需要先在宿主机上面(这里是ubuntu)安装wiringPi库
2.wiringPi库百度网盘:
链接:https://pan.baidu.com/s/1cPIt-xZLye1DAQjq2yKzeg
提取码:35vt
进入解压后的WiringPi文件夹,然后打开INSTALL这个文件夹,查看如何下载,这里显示直接执行build文件即可(编译wiringPi库生成动态库,编译时需要链接,但是它是使用的gcc编译器,编译出来库是只能运行在x86平台上的),然后将会下载到/usr/local/lib这个目录下,然后可以使用指令:arm-linux-gnueabihf-gcc demo.c -I /home/fhn/wringPi/WiringPi/wiringPi -lwiringPi但是会发现报错,是因为链接wiringPi库的时候是链的/usr/local/lib这个目录下的libwiringPi.so
在这里插入图片描述
但是file libwiringPi.so去查看这个文件的属性,发现这个文件的属性是在x86上面运行的,然而我们需要在ARM上面运行,所以是不兼容的,会报错:
/home/fhn/arm-tool/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
在这里插入图片描述
正常情况下我们先要交叉编译wiringPi库,编译出适合树莓派的库,这时候交叉编译可执行程序的时候,链接库的格式也是正确的。那么我们可以将树莓派的wiringPi库拿到虚拟机,libwiringPi.so就这个动态库,但是这是个软连接(相当于快捷方式)

树莓派的wiringPi库:

cd /usr/lib/
ls
在这里插入图片描述
使用指令:ls -l |grep libwiringPi.so可以看出这个文件是指向libwiringPi.so.2.50这个动态库的。所以我们需要将这个动态库发送到ubuntu里面,使用指令:scp libwiringPi.so.2.50 fhn@192.168.43.112:/home/fhn/wringPi/WiringPi,就算将软连接发送到ubuntu也不会指向这个动态库,还需要我们自己创建动态库。如果传输过程中出现错误:ssh: connect to host 192.168.43.112 port 22: Connection refused lost connection表示ubuntu没有安装ssh,在ubuntu里面下载ssh即可:sudo apt-get install ssh
在这里插入图片描述
使用指令:ln -s libwiringPi.so.2.50 libwiringPi.so 创建软连接,下面有详细的讲解软硬链接,创建软连接后使用指令:arm-linux-gnueabihf-gcc hc.c -I /home/fhn/wringPi/WiringPi/wiringPi -L . -lwiringPi -o hc进行编译,其中:-I /home/fhn/wringPi/WiringPi/wiringPi是链接的wiringPi库的头文件,-L是指定动态库在当前目录下去查找库文件。

学习指令:grep gcc * -nir在所有文件里面查找gcc字眼,n表示显示行号、i表示不区分大小写、n表示递归查找、*表示在所有文件里面去查找。

软链接 参考文章:link

软链接概念(面试):
  1. 软链接文件有类似于Windows的快捷方式。
  2. 在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
    3. 你选定的位置上生成一个文件的镜像,不会占用磁盘空间
如何生成:
n -s libwiringPi.so.2.50 libwiringPi.so

指令 参数 要被链接的文件 软链接文件名字

详情参考博文:

https://blog.csdn.net/FHNCSDN/article/details/120187773?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166374952416782417027369%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166374952416782417027369&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-120187773-null-null.142v48pc_rank_34_default_3,201v3add_ask&utm_term=%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91%E8%BD%AF%E8%BF%9E%E6%8E%A5&spm=1018.2226.3001.4187

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值