查看: 6570|回复: 5

[求助] 请教WiringPi的SPI使用问题

[复制链接]
  • TA的每日心情
    开心
    2013-10-31 08:31
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-5-1 08:51:35 | 显示全部楼层 |阅读模式
    分享到:
    问题描述:
    我想使用WiringPi库来控制Pi的SPI,但是编译时遇到问题:
    我在main.c文件中只调用SPIsetup函数,且把main.c文件直接放到了/home/pi/wiringPi/wiringPi/文件夹下面。
    首先编译得到main.o,然后试图将该文件夹下的相关文件进行连接输出:

    pi@raspberrypi ~/wiringPi/wiringPi $ gcc -o rfpi main.o wiringPi.o wiringPiSPI.o piHiPri.o piNes.o piThread.o gertboard.o lcd.o softPwm.o softServo.o softTone.o wiringPiFace.o
    wiringPi.o: In function `wiringPiISR':
    wiringPi.c.text+0xb04): undefined reference to `pthread_create'
    piThread.o: In function `piThreadCreate':
    piThread.c.text+0x18): undefined reference to `pthread_create'

    看起来是缺少了相关的目标文件,发现文件夹里还有个动态库 libwiringPi.so.1.0,于是连接时把这个动态库加进来:


    pi@raspberrypi ~/wiringPi/wiringPi $ gcc -o rfpi main.o wiringPi.o wiringPiSPI.o piHiPri.o piNes.o piThread.o gertboard.o lcd.o softPwm.o softServo.o softTone.o wiringPiFace.o -L. -llibwiringPi
    /usr/bin/ld: cannot find -llibwiringPi
    collect2: ld returned 1 exit status

    提示在 /usr/bin/ld 目录下找不到这个库文件,为什么会在这个目录下找,我已经把库文件的路径(当前目录添加到了编译选项中),难道是文件名不对吗?

    pi@raspberrypi ~/wiringPi/wiringPi $ gcc -o rfpi main.o wiringPi.o wiringPiSPI.o piHiPri.o piNes.o piThread.o gertboard.o lcd.o softPwm.o softServo.o softTone.o wiringPiFace.o -L. -llibwiringPi.so.1.0
    /usr/bin/ld: cannot find -llibwiringPi.so.1.0
    collect2: ld returned 1 exit status

    使用完整的文件名还是不行。
    我在编译之前已经使用gpio load spi 命令加载了SPI模块到内核,而且可以确认我的wiringPi库已经成功安装。
    请教大家该怎么进行编译。

    另外,我的main.c文件如下:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <unistd.h>
    4. #include <wiringPi.h>
    5. #include <wiringPiSPI.h>

    6. int main(void)
    7. {
    8.   int chan=0;
    9.   int speed=1000000;

    10.   if( wiringPiSPISetup (chan, speed)==-1)
    11.   {
    12.     printf("Could not initialise SPIn");
    13.     return;
    14.   }
    15.   printf("When ready hit enter\n");
    16.   (void) getchar();// remove the CR
    17. }
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2013-10-31 08:31
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2013-5-2 21:39:29 | 显示全部楼层
    按照Gordons网站WiringPi上wiringPi的说明,编译时使用-I/usr/local/include -L/usr/local/lib -lwiringPi选项,出现如下错误。
    1. pi@raspberrypi ~/wiringPi/wiringPi $ make rfpi
    2. gcc -o main.o wiringPi.o wiringPiSPI.o piHiPri.o piNes.o piThread.o gertboard.o lcd.o softPwm.o softServo.o softTone.o wiringPiFace.o -I/usr/local/include -L/usr/local/lib -lwiringPi
    3. /usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../arm-linux-gnueabihf/crt1.o: In function `_start':
    4. (.text+0x34): undefined reference to `main'
    5. collect2: ld returned 1 exit status
    6. make: *** [rfpi] Error 1
    复制代码
    哪位帮忙看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-10-31 08:31
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2013-5-3 13:07:48 | 显示全部楼层
    没人理?

    虽然这个问题很简单,希望了解的朋友指点下!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-10-31 08:31
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2013-5-4 10:41:44 | 显示全部楼层
    没人用wiringPi吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-14 16:41
  • 签到天数: 105 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2013-5-6 16:15:42 | 显示全部楼层
    gdmgb520 发表于 2013-5-2 21:39
    按照Gordons网站WiringPi上wiringPi的说明,编译时使用-I/usr/local/include -L/usr/local/lib -lwiringPi ...

    看上去没错,是不是环境问题。另外int main()的返回值最好指定。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-10-31 08:31
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2013-5-9 22:26:42 | 显示全部楼层
    cfanzfr 发表于 2013-5-6 16:15
    看上去没错,是不是环境问题。另外int main()的返回值最好指定。

    终于解决了,仔细看了他网站上对tuxx例子的编译操作:

    cc -o tuxx -Wall -I/usr/local/include -L/usr/local/lib tuxx.c -lwiringPi

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 08:41 , Processed in 0.154293 second(s), 25 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.