老板让我给arm-linux写一个控制gpio接口的c语言程序。查看厂家的板子,linux系统里已经有相关驱动,直接用shell命令也能控制GPIO接口输出和电平。 于是研究差不多我弄了个测试程序,想用arm-linux-gcc交叉编译。厂家提供了一个压缩包,包含如下文件,按照厂家提供的指南,修改makefile文件中我的内核地址位置,保存。然后用make安装。提示找不到mach/gpio.h。我查看了gpio_dev.c文件,确实包含了<mach/gpio.h>,我也查看了系统里相关位置,系统源文件/arch/arm/mach-at91/include/mach/ 下是有gpio.h这个文件的。
之后我将gpio_dev.h头文件拷贝到我要编译的程序所在目录,将其包含进我的c文件,并用arm-linux-gcc -o编译。显示"_IO"未定义。而这个"_IO"是gpio_dev.h里定义的宏,不知道到那去参照。 有没有 #include “gpio_dev.h”,编译时有没有加入头文件路径? _IO这个应该在ioctl.h里有 ioctl.h按路径包含进C就编译成功了。 可能本来这个头文件应该是包含在哪个头文件里的,厂商给的驱动有问题,没法把相关文件编译进内核造成系统找不到这个文件的路径。我直接包含就没问题了。
|