用户
 找回密码
 立即注册

QQ登录

只需要一步,快速开始

搜索

85

主题

155

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
42477
2017-5-13 16:05:22 geeiot 管理员 楼主 81639
想要在eclipse中编译wiringpi的树莓派程序,必须先搭建eclipse的交叉编译环境,具体教程看下面的链接:http://www.cnblogs.com/einstein-2014731/p/5433703.html 。同时,本教程部分参考http://www.cnblogs.com/einstein-2014731/p/5444218.html(这个教程行不通,不能Build)。先行条件:Ubuntu系统(其他Linux也行的)、搭建好交叉编译环境的eclipse
一、下载最新版的wiringpi
Ubuntu中包含wiringPi 这里一定要使用下载文件这个方法 输入网址 https://git.drogon.net/?p=wiringPi;a=summary   点最后那个snapshot下载。
Screenshot.png

二、解压
将下载的文件解压到home/data中(其他文件夹中也是可以的)。然后打开解压后的目录,新建文件夹arm_lib
2017-05-13 15-40-49_1.png


三、到你的树莓派/usr/lib下面复制以下四个文件到刚才新建的目录arm_lib中
2017-05-13 15-42-26_2.png

这儿解释一下为什么要这么做。本来wiringpi是可以直接./build的,但是build出来的是x86的呀。eclipse编译的时候编译的是arm的程序,所以说直接bulid是行不通的。交叉编译再去build就麻烦了,还不如直接去复制。如果嫌麻烦的我把下载地址贴在后面,wiringpi的版本为2.44。

四、启动eclipse,新建项目
1、新建个工程 选择CrossGcc 最好是Hello world模版 改一改就好了。
658298-20160428202010033-795699233.jpg

2、配置环境,还是参考前面的eclipse交叉编译环境搭建
658298-20160428202224955-1381256346.jpg

3、引入wiringpi需要的库
a.项目属性 -> C/C++ Build->Settings->Tools Settings->Cross GCC Compiler->Includes->Include Paths
2017-05-13 15-51-55_3.png

点击+号,选择file system
2017-05-13 15-52-40_4.png

路径选择你解压的wiringpi中的wiringp这个文件夹
b.项目属性 -> C/C++ Build->Settings->Tools Settings->Cross GCC Linker->Libraries
2017-05-13 15-56-09_5.png

在Libraries中添加pthread、wiringPi两项。注意大小写!
在Libraries search path中添加arm_lib路径。
好了,保存退出。

五、写个测试程序
写一个LED闪烁的测试程序,LED正极连接GPIO12,负极连接GND。程序如下:
  1. /*
  2. ============================================================================
  3. Name        : pi_default.c
  4. Author      : Cheetah
  5. Version     :
  6. Copyright   : Geeiot
  7. Description : Test in C, Ansi-style
  8. ============================================================================
  9. */

  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <stdint.h>
  13. #include <wiringPi.h>

  14. #define PIN 1

  15. int main(void)
  16. {
  17.         printf("Eclipse for raspberry pi test, made by Geeiot!\n");
  18.         if (wiringPiSetup() == -1)
  19.         {
  20.                 printf("Wiringpi setup error!");
  21.                 return -1;
  22.         }
  23.         pinMode(PIN,OUTPUT);
  24.         while (1)
  25.         {
  26.                 digitalWrite(PIN, 1);
  27.                 delay(500);
  28.                 digitalWrite(PIN, 0);
  29.                 delay(500);
  30.         }
  31.         return 0;
  32. }
复制代码
编译通过,复制编译后的程序到树莓派中运行!
2017-05-13 16-03-38_6.png

arm_lib下载:
游客,如果您要查看本帖隐藏内容请回复

转载请注明出处哟~欢迎关注Geeiot公众号,更多好玩,有趣的极客项目,尽在Geeiot!
使用道具 举报 回复
谢谢分享 请问您是用的Ubuntu系统么
使用道具 举报 回复 支持 反对
April2727 发表于 2017-9-11 22:52
谢谢分享 请问您是用的Ubuntu系统么

是的。Ubuntu 16.04
使用道具 举报 回复 支持 反对
您好 我按照您的步骤来安装了 但是最后编译的时候 Makefile里出现错误         @echo 'Building target: $@' 请问您有遇到过 知道怎么解决么
使用道具 举报 回复 支持 反对
2017-9-12 08:51:16 geeiot 管理员
5#
April2727 发表于 2017-9-11 23:16
您好 我按照您的步骤来安装了 但是最后编译的时候 Makefile里出现错误         @echo 'Building target: $@' 请问 ...

看看console里面报什么错。makefile报错的原因的原因多半是因为库的原因
使用道具 举报 回复 支持 反对
geeiot 发表于 2017-9-12 08:51
看看console里面报什么错。makefile报错的原因的原因多半是因为库的原因

库的链接问题 我已经解决了 我现在还有warning , 我查了一下 是64位和32位的问题 是因为arm_lib的库是32位的吗? 您知道怎么解决吗
/usr/bin/ld: skipping incompatible /home/april2727/workspace/library/wiringPi-e8da87f/arm_lib/libwiringPi.so when searching for -lwiringPi
/usr/bin/ld: skipping incompatible /home/april2727/workspace/library/wiringPi-e8da87f/arm_lib/libwiringPiDev.so when searching for -lwiringPiDe
使用道具 举报 回复 支持 反对
2017-9-13 09:56:59 geeiot 管理员
7#
April2727 发表于 2017-9-13 05:02
库的链接问题 我已经解决了 我现在还有warning , 我查了一下 是64位和32位的问题 是因为arm_lib的库是32 ...

一种是你可以直接去树莓派上面拷贝,虽然我不清楚最新的树莓派系统位数,是不是64位有待验证。第二个是搭建交叉编译环境,自己编译wiringpi。第三个就是编写程序的时候选择32位(这个我没注意过)
使用道具 举报 回复 支持 反对
!!!您好,我在贴吧看到了这篇教学帖子,所以我就注册了一个用户来感谢您!!!
真的很谢谢!!!
学习了!!!
使用道具 举报 回复 支持 反对
写的很好,很有帮助,我尝试一下
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册