之前做的一直是IDE,对makefile、命令行之类接触不多。
很是困惑Linux中的头文件。譬如#include <stdio.h>,譬如#include <linux/module.h>,绝对路径是什么。。。
搜索了下具体的文件,发现往往有多份,路径也千奇百怪。譬如 内核/include/linux/...,再譬如 内核/include/uapi/linux/...,具体是怎么个区别?
搜到片帖子,http://www.cnblogs.com/QuLory/archive/2013/04/10/3011564.html,说如果在include/linux/和include/uapi/linux/.下有同名的文件,那通常前者会包含后者。还说之所以搞这么复杂,是为了更好的分开某些引用用户库文件和某些引用系统库文件。
网上有篇帖子讲的挺好,http://blog.csdn.net/dreaming_my_dreams/article/details/7745148,
#include <linux/***.h> 是在linux-2.6.29/include/linux下面寻找源文件。
#include <asm/***.h> 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。
#include <mach/***.h> 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。
#include<plat/regs-adc.h>在linux-2.6.31_TX2440A20100510\linux-2.6.31_TX2440A\arch\arm\plat-s3c\include\plat
不过年代久远,现在最新都4.0了,不清楚是不是还这么个说法。
请教了下公司的同事,趾高气昂又支支吾吾,真是上火。
留着吧。