arm-linux-gnueabihf-gcc -v编译适合在树莓派上运行的可执行文件
scp xxx.c pi@ip地址 : /home/pi
指令 文件名 开发板用户名@ip地址: 开发板绝度路径 password:输入开发板密码 同理从树莓派给linux传文件也一样
grep gcc * -nir 查找包含gcc
history | grep 2.c 在历史中查找关于2.c的指令
带wiringPi库的交叉编译
找到库位置
arm-linux-gnueabihf-gcc 1.c -I /home/wang/lessonPI/WiringPi/wiringPi
在linux里面编译通过-I(大写i) 加路径 交叉编译
出现问题 说明链接的库有问题 无法编译出适合在树莓派中的执行文件 所以需要修改库 从树莓派的库里面找到发送过来
我们需要的是libwiringPi.so.2.50 但是通过查看 发现这个是libwiringPi.so的链接
先尝试直接发送库过去
发现还是不行无法直接用链接后的库
Linux创建连接命令 ln -s创建软连接
1.类似于windows里的快捷方式
2.在符号连接中,文件实际上是一个文本文件,其中包含有另一个文件的位置信息
ln -s 它的功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,
具体用法是:ln -s 源文件 目标文件。
当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下
用ln命令链接
例如:ln -s /bin/less /usr/local/bin/less
要被链接的文件 软链接文件名字
这 里有两点要注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;第二,ln的链接又软链接 和硬链接
两种,
软链接 ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,
硬链接 ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件
无论是软链接还是硬链接,文件都保持同步变化。
建立软链接 创建成功
这个时候就可以调库了 生成可以在树莓派上执行的文件 发送给树莓派就可以了
-l参数就是用来指定程序要链接的库加路径,-l参数紧接着就是库名也加路径 (这里库就在这个目录所以不必加路径),那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了 下面三个例子实在不同的路径
1. -I 链接的库的路径 -L. 当前路径
2.改变路径 但是库要加上路径
树莓派上运行结果