刚才开始接触树莓派,下载了BCM2835库和wiringPi库,根据例子测试发现,BCM2835库编译通过,并且可以正常执行,但是在用wiringPi库编译时报错,找不到wiringPi.h文件。
代码如下:
#include <wiringpi.h>
char LED = 25;
int main(void)
{
if(wiringPiSetup() < 0)return 1;
pinMode (LED,OUTPUT) ;
while(1)
{
digitalWrite(LED, 1) ;
delay (200);
digitalWrite(LED, 0) ;
delay (200);
}
}
执行
#gcc -Wall led_wiringpi.c -o led_wiringpi -lwiringPi
报错 找不到wiringpi.h文件
请注意上面的 <wiringpi.h> ,编译器会去 /usr/include 目录下去找wiringpi.h这个文件,而这个头文件在 目录 wiringPi/wiringPi 下,在安装时并没有把这个头文件复制到 /user/include 目录,所以 我们需要手动处理
1、进入wiringPi/wiringPi 目录 , 即安装的文件夹内
2、# ls //查看文件 你会发现有一个 wiringPi.h 的头文件
3、#sudo cp wiringPi.h /usr/include //拷贝头文件
注意! 源文件的头文件名为 wiringPi.h 而 代码中包含的头文件名为 wiringpi.h ,虽然只是一个大小写区别,但是测试发现还是找不到!
所以 代码中要成如下
#include <wiringPi.h>
char LED = 25;
int main(void)
{
if(wiringPiSetup() < 0)return 1;
pinMode (LED,OUTPUT) ;
while(1)
{
digitalWrite(LED, 1) ;
delay (200);
digitalWrite(LED, 0) ;
delay (200);
}
}
再执行 #gcc -Wall led_wiringpi.c -o led_wiringpi -lwiringPi
一切正常 ,测试通过
上面的方法的通过把需要引用的头文件拷贝到默认的目录下。下面采用把头文件路径加入到环境变量中,这样就不需要拷贝头文件了,不然就要把所以的头文件都要拷贝。
1、#cd ~ //进入用户目录
2、#sudo cp .bashrc .bashrc.bak //备份原有环境变量文件
3、#sudo vim .bashrc //打开环境变量文件
4、在文件的最下面 加入 以下内容
export LD_LIBRARY_PATH=/home/pi/wiringPi/wiringPi:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/pi/wiringPi/devLib:$LD_LIBRARY_PATH
以上两句是告诉编译器 除了默认的包含路径外 还需要去上面指定的路径去找头文件
5、#source .bashrc //使环境变量文件生效
至此 大功告成!
编译正常