sinc_mark 发表于 2017-3-7 09:37:23

关于linux编译是头文件出错请教

事情是这样的:我的虚拟机是ubuntu14,内核版本是linux3.2,我现在想用飞凌的6410(内核版本为3.0)开发板的spi功能,已经修改的相关的地方,开启6410的spi节点,在网上找了一个SPI测试程序,该测试程序中有一个#include <linux/spi/spi.h>,这个SPI.h文件是spi的头文件,我也指向了该头文件(绝对路径、相对路径,编译是指定路径等方式都尝试过),但现在编译的时候老是报错:说没有该路径文件,我现在不知道问什么,是不是内核不同导致的?如果是,我是不是需要安装一个3.0的内核版本才能解决,谢谢?

7802848 发表于 2017-3-7 09:47:01

INCDIR+<>=绝对路径
找头文件的时候,会去INCDIR路径去找的

sinc_mark 发表于 2017-3-7 10:08:46

7802848 发表于 2017-3-7 09:47
INCDIR+=绝对路径
找头文件的时候,会去INCDIR路径去找的

mk@ubuntu:~/linux-3.0.1$ arm-linux-gcc spidev_test.c -o spitest -INCDIR=home/mk/linux-3.0.1/include/linux/spi/spi.h
spidev_test.c:27:27: error: linux/spi/spi.h: No such file or directory
编译依旧提示无该路径

7802848 发表于 2017-3-7 10:17:33

卧槽, incdir=/home/mk/linux-3.0.1/include
然后你再 include <linux/spi/spi.h>
不就是绝对路径了吗 incdir + <>

sinc_mark 发表于 2017-3-7 11:02:02

我不知道为什么同一个路径下的其它文件可以包含,但spi.h就显示无路径!

javenreal 发表于 2017-3-7 12:05:12

难道是spi.h限制了权限, 导致编译进程无法访问?

javenreal 发表于 2017-3-7 12:06:13

另外,你楼主位的是 “SPI.h”, 3楼的是"spi.h", 大小写对不上

sinc_mark 发表于 2017-3-7 17:46:49

javenreal 发表于 2017-3-7 12:06
另外,你楼主位的是 “SPI.h”, 3楼的是"spi.h", 大小写对不上

我楼主位是写错了,是spi.h,小写的,我疑惑的是同一个路径下面的spidev.h文件就可以引用,spi.h就不能,不明白....

ywlzh 发表于 2017-3-7 18:18:35

Linux 对应的内核源码树 是否编译好了

makefile文件需要指明用的内核

winterw 发表于 2017-3-7 18:25:03

sinc_mark 发表于 2017-3-7 17:46
我楼主位是写错了,是spi.h,小写的,我疑惑的是同一个路径下面的spidev.h文件就可以引用,spi.h就不能, ...

你在spi.h的目录下面随便创建一个h文件,然后去c文件里include,看看能不能成功

sinc_mark 发表于 2017-3-8 08:39:15

ywlzh 发表于 2017-3-7 18:18
Linux 对应的内核源码树 是否编译好了

makefile文件需要指明用的内核

我没有使用makefile编译的,只是用了gcc交叉编译工具。所以我才问,不同的内核下,都不可以引用头文件吗?
页: [1]
查看完整版本: 关于linux编译是头文件出错请教