diff --git a/README.md b/README.md
index 390e111..02aeae1 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,62 @@
 flaim
 =====
+
+顶层configure.ac文件：
+===================
+AC_CONFIG_SRCDIR(dir1[ dir2 ... dirN])
+每个目录都有一个完整的GCS-compliant子项目，调用这个宏的configure.ac相当于一个控制文件，传递所有的配置选项给子项目。其中ftk必须先编译，因为其他子项目依赖它。
+
+
+AM_INIT_AUTOMAKE的foreign选项，这个选项告诉Automake这个项目不是GNU标准的，因此，Automake无需GNU项目的一些文件
+
+
+项目中并没有使用libtool，但是子项目还是希望父项目能构包含所有的脚本，LT_INIT宏提供ltmain.sh脚本，如果父项目没有初始化Libtool，那么autoreconf就会去父层目录查看，是否当前项目是父项目的子项目，如果没有在父项目的configure.ac需要的文件时，就会报错。(这个例子中，子项目autoreconf会查找../ltmain.sh文件)
+
+AC_CONFIG_MACRO_DIR(macro-dir)
+这个宏用于标识所有项目相关的M4宏文件的子目录，这些宏是aclocal工具需要的；如果不使用这个宏，Libtool会抱怨。
+
+
+
+顶层Makefile.am文件：
+===================
+使用ACLOCAL_AMFLAGS是因为顶层configure.ac中使用了AC_CONFIG_MACRO_DIR()，这个变量后面接的是宏文件的搜索路径，格式类似与C编译器；也可为aclocal命令添加其他的参数。
+
+
+子项目flaim，没有使用关键字foreign关键字，因为这个一个真正的开元项目，GNU标准项目，因此需要GNU的一些文件。
+
+
+AC_LANG宏，用于标识所使用的编程语言，autoconf在configure过程中根据这个生成测试，在这里，将C++做为参数传递，因此autoconf会通过测试C++编译器和CXX变量，而不是测试C编译器和CC变量。同时因为没有C代码，因此删除autoscan工具扫描生成的AC_PROG_CC宏。
+
+
+注意：AC_CONFIG_SRCDIR这个宏的参数是autoscan自己判断的，不一定准确，因此自己查一下；
+
+
+FLM_PROG_TRY_DOXYGEN这个宏是自定义的宏，这个宏的实现会在后面介绍。
+这个宏的功能是管理一个叫做DOXYGEN的precious变量，如果这个变量已经被设置，则这个宏什么都不做；否则，它将搜索系统path去查找doxygen程序，如果找到了，就赋给变量。
+
+
+AC_ARG_ENABLE这个宏很重要
+
+
+Automake提供AM_CONDITIONAL宏，原型为AM_CONDITIONAL(variable, condition)，第一个参数是在Makefile.am中和测试相关的，第二个参数是一个shell条件，一个shell脚本，可以用在if-then表达式中的条件(其实这就是宏的工作原理)。这个宏经常定义两个替代变量variable_TRUE和variable_FALSE。如果条件为真，variable_TRUE为空并且variable_FALSE设置为#(就是注释)
+
+
+AM_COND_IF原型：AM_CONF_IF(conditional-variable, [if-true], [if-false])，如果conditional-variable变量被
+AM_CONDITIONAL设置为true，则if-true shell脚本(包含任意的autoconf macro)被执行，否则if-false脚本被执行
+
+
+AC_SYS_LARGEFILE 即使用户是在32位环境，这个宏也会使C预编译器强制64位文件地址(也叫大文件)，并添加到config.h.in模板中。(在数据库中，这个是很重要的功能)
+
+
+简单的使用-lpthread使用pthread库的方法是错误的，因为有的厂商开发了两个版本的库，一个是单线程的，一个是线程安全的(会有写性能损耗)，着就需要编译器能链接正确的版本，ACX_PTHREAD宏解决了这个问题。(这个宏是为C语言设计的，因此要支持C++，就需要做一些修改)，这个宏提供了几个环境变量，包括PTHREAD_CC，PTHREAD_CXX，PTHREAD_CFLAGS，PTHREAD_CXXFLAGS和PTHREAD_LIBS。如果代码都是多线程的，则处理方式就很简单了：只需要将这些变量追加到标准的CFLAGS，CXXFLAGS，CC，CXX和LIBS变量。
+
+不要太相信autoscan扫描的要检查的宏，可以将检查的宏都关掉，不链接，当出现符号问题的时候再添加。
+
+
+AS_IF宏和if-then很像
+
+
+如果在Makefile.am中使用关键字ifeq，ifneq，ifdef和ifndef，那么要在configure.ac中定义AM_CONDITIONAL。
+
+
+Automake -local 和 -hook变量，-local在standard target之前执行，是standard target的依赖，而-hook在standard target之后执行