1.树莓派wiringPi

1.wiringPi安装

方案A——使用GIT工具

sudo apt-get install git-core//如果在这个过程中出现错误,尝试更新软件,例如输入以下指令:
sudo apt-get update
sudo apt-get upgrade//紧接着可以通过GIT获得wiringPi的源代码
git clone https://github.com/WiringPi/WiringPi.git//若需要更新wiringPi。
cd wiringPi
git pull origin//进入wiringPi目录并安装wiringPi
cd wiringPi
./build

安装完成后,在 /usr/lib/ 文件夹下会多出 libwiringPiDev.so   libwiringPi.so    和   git-core  三个文件,并且软链接到

lrwxrwxrwx  1 root root    37 Apr 12 04:10 libwiringPiDev.so -> /usr/local/lib/libwiringPiDev.so.2.60
lrwxrwxrwx  1 root root    34 Apr 12 04:10 libwiringPi.so -> /usr/local/lib/libwiringPi.so.2.60

以及下列查找

:/#sudo find . -name libwiring*
./usr/lib/libwiringPiDev.so
./usr/lib/libwiringPi.so
./usr/local/lib/libwiringPi.so.2.60
./usr/local/lib/libwiringPiDev.so.2.60
./usr/local/lib/libwiringPiDev.so
./usr/local/lib/libwiringPi.so    //以下为源码目录
./home/ /WiringPi/debian/libwiringpi2.shlibs
./home/ /WiringPi/debian/libwiringpi-dev.dirs
./home/ /WiringPi/debian/libwiringpi-dev.install
./home/ /WiringPi/debian/libwiringpi2.install
./home/ /WiringPi/wiringPi/libwiringPi.so.2.60
./home/ /WiringPi/devLib/libwiringPiDev.so.2.60   lrwxrwxrwx  1 root root     22 Apr 12 04:10 libwiringPiDev.so -> libwiringPiDev.so.2.60
-rwxr-xr-x  1 root root  27808 Apr 12 04:10 libwiringPiDev.so.2.60
lrwxrwxrwx  1 root root     19 Apr 12 04:10 libwiringPi.so -> libwiringPi.so.2.60
-rwxr-xr-x  1 root root  69852 Apr 12 04:10 libwiringPi.so.2.60
方案B——直接下载和解压

简单的输入以下网址:

https://git.drogon.net/?p=wiringPi;a=summary

点击图中的snapshot便可下载最新版本。
你可能下载到一个名为wiringPi-98bcb20.tar.gz的压缩包,需要注意的是98bcb20只是一个版本号,当你下载wiringPi的时候该版本号可能会发生改变。
你需要解压wiringPi源代码并进行安装,可输入以下指令:

tar xfz wiringPi-98bcb20.tar.gz
cd wiringPi-98bcb20
./build
-rwxr-xr-x  1 agpf agpf 5320 Apr 12 04:09 build
-rw-r--r--  1 agpf agpf 7651 Apr 12 04:09 COPYING.LESSER
drwxr-xr-x  2 agpf agpf 4096 Apr 12 04:09 debian
drwxr-xr-x  3 agpf agpf 4096 Apr 12 04:09 debian-template
drwxr-xr-x  2 agpf agpf 4096 Apr 12 04:10 devLib
drwxr-xr-x  7 agpf agpf 4096 Apr 12 04:09 examples
drwxr-xr-x  8 agpf agpf 4096 Apr 12 04:09 .git
drwxr-xr-x  3 agpf agpf 4096 Apr 12 04:09 .github
-rw-r--r--  1 agpf agpf   88 Apr 12 04:09 .gitignore
drwxr-xr-x  2 agpf agpf 4096 Apr 12 04:10 gpio
-rw-r--r--  1 agpf agpf  667 Apr 12 04:09 INSTALL
-rw-r--r--  1 agpf agpf 1795 Apr 12 04:09 newVersion
-rw-r--r--  1 agpf agpf  865 Apr 12 04:09 People
drwxr-xr-x  2 agpf agpf 4096 Apr 12 04:09 pins
-rw-r--r--  1 agpf agpf 1365 Apr 12 04:09 README.md
-rwxr-xr-x  1 agpf agpf  151 Apr 12 04:09 update
-rw-r--r--  1 agpf agpf    5 Apr 12 04:09 VERSION
-rw-r--r--  1 agpf agpf   72 Apr 12 04:09 version.h
drwxr-xr-x  2 agpf agpf 4096 Apr 12 04:10 wiringPi
drwxr-xr-x  2 agpf agpf 4096 Apr 12 04:09 wiringPiD

a. devLib:Raspberry basical hardware driv.

b. examples:Some examples for the wiringPi Lib.

c. gpio:gpio demo to show the control of gpio.

d. libwiringPi.so:Baisic wiringpi library usefull when you are compile the c code.

e. main:Executiable file for Raspberry.

f. main.c:The c source code.

g. Makefile:Used to compile the C Code into executibale binary file.

h. wiringPi:The source Code of wiringPi(include .c & .h file),when you are compile the code,it needed.

i. wiringPiD:Other devices Library Source Code if you used it,you need to include the lib and .h file.

测试wiringPi是否安装成功

wiringPi包括一套gpio命令,使用gpio命令可以控制树莓派上的各种接口,通过以下指令可以测试wiringPi是否安装成功。

gpio -v
gpio readall

2.wiringPi库交叉编译(交叉编译工具)

首先需要把树莓派的wiringPi的库拿过来用。

将树莓派下该文件移植到Linux操作系统下:./usr/local/lib/libwiringPi.so.2.60  

为其创建软链接

//具体用法是:ln -s 源文件 目标文件。
ln -s libwiringPi.so.2.60 libwiringPi.so
//交叉编译
arm-linux-gnueabihf-gcc main.c -I /交叉编译libwiringPi.so存放目录 -L. -lwiringPi

3.静态库与动态库搜索路径设置

1. 连接和运行时库文件搜索路径到设置

库文件在链接静态库和共享库)和运行仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib/usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外的库,需要将库的位置添加到库的搜索路径之中。设置库文件的搜索路径有下列两种方式,可任选其一使用:

在 /etc/ld.so.conf 文件中添加库的搜索路径。(或者在/etc/ld.so.conf.d 下新建一个.conf文件,将搜索路径一行一个加入-junziyang)
        将自己可能存放库文件的路径都加入到/etc/ld.so.conf中是明智的选择添加方法也极其简单,将库文件的绝对路径直接写进去就OK了,一行一个。例如:      库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外的库,需要将库的位置添加到库的搜索路径之中。设置库文件的搜索路径有下列两种方式,可任选其一使用:
1、在 /etc/ld.so.conf 文件中添加库的搜索路径。(或者在 etc/ld.so.conf.d  下新建一个  .conf  文件,将搜索路径一行一个加入-junziyang)
        将自己可能存放库文件的路径都加入到/etc/ld.so.conf中是明智的选择添加方法也极其简单,将库文件的绝对路径直接写进去,一行一个。例如:

/usr/X11R6/lib
/usr/local/lib
/opt/lib

Note:这种搜索路径的设置方式对于程序链接时的库(包括共享库和静态库)的定位已经足够了,但是对于使用了共享库的程序的执行还是不够的。这是因为为了加快程序执行时对共享库的定位速度,避免使用搜索路径查找共享库的低效率,所以是直接读取库列表文件 /etc/ld.so.cache 从中进行搜索的。/etc/ld.so.cache 是一个非文本的数据文件,不能直接编辑,它是根据 /etc/ld.so.conf 中设置的搜索路径由 /sbin/ldconfig 命令将这些搜索路径下的共享库文件集中在一起而生成的(ldconfig 命令要以 root 权限执行)。

因此,为了保证程序执行时对库的定位,在 /etc/ld.so.conf 中进行了库搜索路径的设置之后,还必须要运行 /sbin/ldconfig 命令更新 /etc/ld.so.cache 文件之后才可以。ldconfig ,简单的说,它的作用就是将/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache 以供使用。因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下 /sbin/ldconfig使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,也是不会被使用的,结果编译过程中抱错,缺少xxx库,去查看发现明明就在那放着,搞的想大骂computer蠢猪一个。
          这种设置方式需要 root 权限,以改变 /etc/ld.so.conf 文件并执行 /sbin/ldconfig 命令。而且,当系统重新启动后,所有的基于 GTK2 的程序在运行时都将使用新安装的 GTK+ 库。不幸的是,由于 GTK+ 版本的改变,这有时会给应用程序带来兼容性的问题,造成某些程序运行不正常。为了避免出现上面的这些情况,在 GTK+ 及其依赖库的安装过程中对于库的搜索路径的设置将采用另一种方式进行。这种设置方式不需要 root 权限,设置也简单。

在程序链接时,对于库文件(静态库和共享库)的搜索路径,除了上面的设置方式之外,还可以通过 -L 参数显式指定。因为用 -L 设置的路径将被优先搜索,所以在链接的时候通常都会以这种方式直接指定要连接的库的路径。

2、 在环境变量 LD_LIBRARY_PATH 中指明库的搜索路径。
        设置方式:

export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH

可以用下面的命令查看 LD_LIBRAY_PATH 的设置内容:

echo $LD_LIBRARY_PATH

至此,库的两种设置就完成了。

2.交叉编译时候如何配置连接库的搜索路径

交叉编译的时候不能使用本地(i686机器,即PC机器)机器上的库,但是在做编译链接的时候默认的是使用本地库,即/usr/lib, /lib两个目录。因此,在交叉编译的时候,要采取一些方法使得在编译链接的时候找到需要的库。

首先,要知道:编译的时候只需要头文档,真正实际的库文档在链接的时候用到。 (这是我的理解,假如有不对的地方,敬请网上各位大侠指教) 然后,讲讲如何在交叉编译链接的时候找到需要的库。
    (1)交叉编译时候直接使用   -L和-I   参数指定搜索非标准的库文档 头文档 的路径。例如:

arm-linux-gcc test.c -L/usr/local/arm/2.95.3/arm-linux/lib -I/usr/local/arm/2.95.3/arm-linux/include

(2)使用ld.so.conf文档,将用到的库所在文档目录添加到此文档中,然后使用ldconfig命令刷新缓存。
    (3)使用如下命令:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/2.95.3/arm-linux-lib

通过设定环境变量 LD_LIBRARY_PATH 也可以指定动态库搜索路径。当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔。

    (4)交叉编译时使用软件的configure参数。例如我编译minigui-1.3.3,使用如下配置:#!/bin/bashrm -f config.cache config.status./configure --build=i686-linux --host=arm-linux --target=arm-linux /CFLAGS=-I/usr/local/arm/2.95.3/arm-linux/include /LDFLAGS=-L/usr/local/arm/2.95.3/arm-linux/lib /--prefix=/usr/local/arm/2.95.3/arm-linux /--enable-lite /--disable-galqvfb /--disable-qvfbial /--disable-vbfsupport /--disable-ttfsupport /--disable-type1support /--disable-imegb2312py /--enable-extfullgif /--enable-extskin /--disable-videoqvfb /--disable-videoecoslcd

这里我配置了CFLAGS和LDFLAGS参数,这样一来,我就不用去修改每个Makefile里-L和-I参数了,也不用再去配置 LD_LIBRARY_PATH或改写ld.so.conf文档了。

树莓派wiringPi安装及交叉编译相关推荐

  1. 树莓派ZeroW学习笔记【0】wiringPi安装和测试

    一.wiringPi简介 [1]wiringPi是仅应用于树莓派平台的GPIO控制库函数,遵循GNU LGPLv3开源协议,并由GIT工具维护,任何人都可以免费使用该软件包.wiringPi使用C或者 ...

  2. 树莓派3B+安装wiringpi和bcm库

    如果想要使用树莓派的gpio.iic.spi等外设资源,我们就需要用到树莓派 一.wringpi wringpi在raspbian系统中都有预装,如果想要重新安装和更新可以执行以下命令: sudo a ...

  3. 带wiringPi库的交叉编译

    WiringPi的下载--网盘提取 链接:https://pan.baidu.com/s/1cPIt-xZLye1DAQjq2yKzeg 提取码:35vt (这个库不是很好,链接的库的格式不对,是宿主 ...

  4. 嵌入式linux安装qt,树莓派上安装qt

    在树莓派上安装了官方的raspbian系统.为了在能在上面开发程序,在系统上安装了qt4 .参考链接http://qt-project.org/wiki/apt-get_Qt4_on_the_Rasp ...

  5. 第七课:树莓派WiringPi库

    目录 一.WiringPi库介绍 二.WiringPi安装 方法一: 安装git工具(已安装跳过)(前提已更换国内下载源) ①:输入一下指令 ​②: 输入指令--在线获得 WiringPi 的源代码( ...

  6. (转)树莓派wiringPi库详解

    https://www.cnblogs.com/lulipro/p/5992172.html <div id="post_detail"> 树莓派wiringPi库详解 ...

  7. 树莓派centos安装的基本配置

    萌新再发一帖,这篇文章呢主要是为大家在树莓派上安装centos以后提供一个问题的解决方案. 首先我呢觉得好奇就在某宝上花了两百来块钱买了一套树莓派,很多人喜欢在树莓派上安装Debian,我呢更青睐用R ...

  8. 树莓派安装python3.5+tensorflow_树莓派4B安装Tensorflow的方法步骤

    1.写作背景 Tensorflow官方在2018年宣布,正式发布支持树莓派版本的Tensorflow,编者开始直接用: pip install tensorflow 进行安装,在安装成功后使用impo ...

  9. 在树莓派上安装AdGuardHome当DNS服务器,来屏蔽广告和追踪的DNS请求

    我的个人博客:zhang0peter的个人博客 AdGuardHome项目地址:AdGuardHome 树莓派先安装好,连上网. 1. wget https://github.com/AdguardT ...

最新文章

  1. 什么?拼命栽培员工,让他强大到足以离开
  2. Incorrect number of FETCH variables
  3. (转载)C++ ofstream和ifstream详细用法
  4. Attention技术应用的最新进展概述
  5. linux挂载硬盘 只读,mount: /dev/vdb 写保护,将以只读方式挂载
  6. C#字符串截取,查找某字符下标
  7. [python学习] 模仿浏览器下载CSDN源文并实现PDF格式备份
  8. android滚轮实现时间年月日选择
  9. Linus通过了Linux中避免master/slave等术语的提案
  10. EntityFramework Core动态加载模型,我们要知道些什么呢?
  11. 静态代理,cglib动态代理,jdk动态代理区别以及流程详解
  12. MS CRM 2011 如何向自定义Ribbon按钮传递参数
  13. 多元统计分析最短距离法_多元统计分析习题及解答.doc
  14. servlet的请求转发与重定向
  15. 洗头 Wet Hair
  16. PLC通讯智能网关-不用PLC编程,实现西门子PLC与罗克韦尔(AB)PLC之间数据通讯
  17. 黑苹果简单驱动 MultiBeast用法基础篇
  18. SAP ABAP ALV 布局 特定用户 及缺省设置控制
  19. 2019.3.20 I/O相关
  20. 数据结构入门----遍历二叉树和线索二叉树

热门文章

  1. 计算机内部网络连接,局域网内电脑连不上网络怎么办
  2. 计算机应用毕业评审表,毕业论文设计评审表.doc
  3. 计算机系统基础实验:数字电路实验
  4. 只会直接插入图片到PPT?图片这样处理,PPT的颜值瞬间提升几倍!
  5. 百度影棒安装apk方法
  6. 华厦邓白氏码查询网址
  7. excel自动筛选_具有范围内条件的Excel自动筛选
  8. MySQL函数(经典收藏)
  9. (C语言)求幂级数展开的部分和
  10. .Net 7 Native AOT 单文件 无依赖 跨平台