linux makefile include问题

T-Quake 2010-04-07 02:23:34
我在我的linux top directory 的makefile中找到 一句
LINUXINCLUDE := -Iinclude \
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
-I$(srctree)/arch/$(hdr-arch)/include \
-include include/linux/autoconf.h

我在/arch/arm/mach_tegra/include

但是 我在/drivers/XXX/XXX.c 的文件中加了个头文件,这个头文件是上面mach_tegra/include/YY.h
编译并没有提示说:“没有该文件”。而是编译通过。
我想说 这是不是上面的Makefile的LINUXINCLUDE的因素阿。但是不能肯定。我想知道这是如何实现的
...全文
348 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
T-Quake 2010-04-08
  • 打赏
  • 举报
回复
换句话说,就是 当在Make menuconfig中指定了 XXX平台了,linux driver是如何能够找到 arch/arm/XXX/include/下的头文件呢?
T-Quake 2010-04-08
  • 打赏
  • 举报
回复
可是 我的C文件以及所有的驱动C文件 可以直接#include<YY.h>
并没有加入/asm/arch/include/YY.h的完整物理路径 ,只是知道 在 .config的CONFIG_ARCH_TEGRA确定arch是 TEGRA 但是 .config可以让驱动找到是/asm/arch/mach_tegra/include/yy.h吗?

deep_pro 2010-04-07
  • 打赏
  • 举报
回复
mach_tegra/include/YY.h

你的.c 可以
#incluyde <asm/arch/YY.h>

因为 include 下的asm arch都是软连接
靠的是主makefile 里的 ARCH 变量指定 asm
是靠.config 里的 CONFIG_ARCH_XXXX 确定arch

T-Quake 2010-04-07
  • 打赏
  • 举报
回复
drivers目录下的所有文件 都可以加入/arch/arm/mach_tegra/include/下所有的.h文件,所以这个CFLAGS应该是在top directory 的Makefile 指定的吧,可是找了下 没有显示的指定。
Makefile是linux kernel 的Makefile, mach_tegra是 可选择的一个ARM平台。不知道 这个 平台下的include是怎么被drivers包含的呢?
qihuanfengyun 2010-04-07
  • 打赏
  • 举报
回复
makefile 只是检查依赖关系。至于你的include 估计会在 CFLAGS 变量中定义文件包含。

你上面的只是makefile中的变量的定义,至于makefile中的依赖关系怎么起作用的还得看具体的依赖语句。

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧