Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2281618
  • 博文数量: 395
  • 博客积分: 10994
  • 博客等级: 上将
  • 技术积分: 5586
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-17 19:49
文章存档

2014年(1)

2013年(10)

2012年(74)

2011年(303)

2010年(7)

分类: LINUX

2011-07-21 15:44:46

make编译模块的时候,源文件从哪里调用头文件???[问题点数:40]
  • (xc889078)
  • 等 级:
  • 结帖率:0.00%
楼主发表于:2011-05-06 20:05:12
是从/usr/include里调用?还是从/linux源代码/include调用???
回复次数:10
  • (俺们那个都是东北人)
  • 等 级:
#1楼 得分:0回复于:2011-05-06 21:23:10
一般是/usr/include/
  • (smilybrother)
  • 等 级:
#2楼 得分:0回复于:2011-05-07 23:35:01
/lib/modules/2.6.35-28-generic/ 我的是从这里调用的
  • (无聊)
  • 等 级:
#3楼 得分:0回复于:2011-05-08 21:51:07
c /usr/include
c++ /usr/include/c++
  • (yuan)
  • 等 级:
#4楼 得分:0回复于:2011-05-09 11:28:31
编译驱动的时候,就是调用你用哪个内核源码的include
  • (Harry_lyc)
  • 等 级:
#5楼 得分:0回复于:2011-05-09 11:31:16
/usr/include
  • (lanyang123456)
  • 等 级:
#6楼 得分:0回复于:2011-05-09 18:46:10
应该是源码目录下的/include
  • (虹)
  • 等 级:
#7楼 得分:0回复于:2011-05-10 10:48:11
答案太多,估计楼主迷茫了。我也来凑下热闹
默认情况下是从/usr/include目录下寻找的。
对于模块编译涉及到内核某些头文件时,一般会在Makefile有一个KDIR选项。这个KDIR指定了内核源码的地址,相对应的,编译器会去KDIR指定的目录下去寻找。
  • (周末了,极速飙车)
  • 等 级:
#8楼 得分:0回复于:2011-05-11 13:36:13
有两种方法:
1. 把源代码放入到Linux kernel 源代码树里, 修改对应目录的Makfile, Kconfig文件.
2. 单独编译, 用命令make -C <Linux kernel 源代码绝对路径> M=`pwd`, 
参考:http://blog.csdn.net/wenxy1/archive/2009/09/07/4528186.aspx
  • (脱离低级趣味的一条好狗)
  • 等 级:
#9楼 得分:0回复于:2011-05-19 19:06:58
Makefile加上
EXTRA_CFLAGS += -v
编译一下,注意看输出的一堆目录,自然什么都出来了。最主要的是
KDIR := /lib/modules/$(shell uname -r)/build/include <------------模块include目录

X86_ASMDIR := /lib/modules/$(shell uname -r)/build/arch/x86/include <----体系结构有关的

CONFIG_FILE := /lib/modules/$(shell uname -r)/build/include/generated/autoconf.h <---内核配置头文件
或者是在
CONFIG_FILE := /lib/modules/$(shell uname -r)/build/include/linux/autoconf.h
  • (冰魂)
  • 等 级:


Makefile加上
EXTRA_CFLAGS += -v
编译一下,注意看输出的一堆目录,自然什么都出来了。最主要的是
KDIR := /lib/modules/$(shell uname -r)/build/include <------------模块include目录

X86_ASMDIR := /lib/modules/$(shell uname -r)/build/arch/x86/include <----体系结构有关的

CONFIG_FILE := /lib/modules/$(shell uname -r)/build/include/generated/autoconf.h <---内核配置头文件
或者是在
CONFIG_FILE := /lib/modules/$(shell uname -r)/build/include/linux/autoconf.h

#10楼 得分:0回复于:2011-05-21 22:31:30
对于内核模块来说,肯定是引用内核的头文件了,至于头文件在哪里,就得自己指定了,像8楼说的那样
阅读(1997) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~