diff --git a/README.md b/README.md
index 49f9baf..5ca2ca5 100644
--- a/README.md
+++ b/README.md
@@ -195,7 +195,7 @@ VPATH(virtual search path): 这是一种方式，允许在src路径外进行conf
 2、并排测试不同的configure；
 3、保持一个干净的src路径，在本地修改后，可以patch diffs；
 4、在只读的src路径下build
-
+5、按照当前build路径，源码路径，顶层build路径，顶层include等顺序添加预处理器命令

 只使用autoscan（autoconf的一部分），而没有使用automake，需要执行下面的命令，来解决文件缺失的问题：
@@ -263,3 +263,43 @@ AC_OUTPUT
 3、当执行不加任何参数执行config.status时，它根据上次检查的结果生成文件；
 4、可以根据tag执行config.status去生成文件，或执行命令；
 5、config.status可能没有根据configure.ac中的tag生成文件，原因是它根据上次检查的结果处理了变量。
+
+
+
+AC_CHECK_HEADERS根据config.h.in生成config.h,eg:
+#config.in.h
+#undef HAVE_UNISTD_H
+#undef HAVE_FOOBAR_H
+执行./configure，若检查到系统中有unistd.h，而没监测到foobar.h时，生成的config.h文件内容如下：
+#define HAVE_UNISTD_H 1
+/* #undef HAVE_FOOBAR_H */
+因此在C程序中可以这样写：
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#if HAVE_FOOBAR_H
+#include <foobar.h>
+#endif
+
+注意：config.h.in文件不要手写，因为个时要求非常严格，易出错。autoheader即可解决，在执行autoreconf时，会自动调用autoheader。(前提是，在configure.ac中使用了AC_CONFIG_HEADERS宏)
+
+
+config.h头文件应该被加载在文件的最开始处，同时也要注意不要在同一文件中加载多次。
+
+注意，不要将config.h放在作为产品一部分的头文件中。
+
+autoconf提供编译宏@DEFS@
+
+加载头文件的顺序，根据-I来决定，
+默认为：
+1、当前build路径.
+2、$(srcdir)
+3、顶层build路径..
+4、项目include路径
+
+
diff --git a/src/Makefile.in b/src/Makefile.in
index b3ea612..4054235 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -20,7 +20,7 @@ CFLAGS ?= -g -O0
 all: jupiter

 jupiter: main.c
-	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $(srcdir)/main.c
+	$(CC) -I. -I$(srcdir) -I.. $(CPPFLAGS) $(CFLAGS) -o $@ $(srcdir)/main.c

 check: all
 	./jupiter | grep "Hello from ./jupiter!"