diff --git a/doc/v2/howto/capi/compile_paddle_lib_en.md b/doc/v2/howto/capi/compile_paddle_lib_en.md
index 11d69b9b79c1a41898d3060d3fe25a31330334a3..6212a3081116d988630706e83d2349dd200b73ab 100644
--- a/doc/v2/howto/capi/compile_paddle_lib_en.md
+++ b/doc/v2/howto/capi/compile_paddle_lib_en.md
@@ -1,3 +1,175 @@
## Install and Build
-TBD
+### Download & Install
+
+ Download the latest C-API development package from CI system and install. You can find the required version in the table below:
+
+
+### From source
+
+ Users can also compile the C-API library from PaddlePaddle source code by compiling with the following compilation options:
+
+
+
+
+Options |
+Value |
+
+
+
+
+WITH_C_API |
+ON |
+
+
+WITH_PYTHON |
+OFF(recommended) |
+
+
+WITH_SWIG_PY |
+OFF(recommended) |
+
+
+WITH_GOLANG |
+OFF(recommended) |
+
+
+WITH_GPU |
+ON/OFF |
+
+
+WITH_MKL |
+ON/OFF |
+
+
+It is best to set up with recommended values to avoid linking with unnecessary libraries. Set other compilation options as you need.
+
+Pull the latest following code snippet from github, and configure compilation options(replace PADDLE_ROOT with the installation path of the PaddlePaddle C-API inference library):
+
+```shell
+PADDLE_ROOT=/path/of/capi
+git clone https://github.com/PaddlePaddle/Paddle.git
+cd Paddle
+mkdir build
+cd build
+cmake -DCMAKE_INSTALL_PREFIX=$PADDLE_ROOT \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DWITH_C_API=ON \
+ -DWITH_SWIG_PY=OFF \
+ -DWITH_GOLANG=OFF \
+ -DWITH_PYTHON=OFF \
+ -DWITH_MKL=OFF \
+ -DWITH_GPU=OFF \
+ ..
+```
+
+After running the above code to generate Makefile , run: `make && make install`. After successful compilation, the dependencies required by C-API(includes: (1)PaddlePaddle inference library and header files; (2) Third-party libraries and header files) will be stored in the `PADDLE_ROOT` directory.
+
+If the compilation is successful, see the following directory structure under `PADDLE_ROOT`(includes PaddlePaddle header files and libraries, and third-party libraries and header files(determined by the link methods if necessary)):
+
+```text
+├── include
+│ └── paddle
+│ ├── arguments.h
+│ ├── capi.h
+│ ├── capi_private.h
+│ ├── config.h
+│ ├── error.h
+│ ├── gradient_machine.h
+│ ├── main.h
+│ ├── matrix.h
+│ ├── paddle_capi.map
+│ └── vector.h
+├── lib
+│ ├── libpaddle_capi_engine.a
+│ ├── libpaddle_capi_layers.a
+│ ├── libpaddle_capi_shared.so
+│ └── libpaddle_capi_whole.a
+└── third_party
+ ├── gflags
+ │ ├── include
+ │ │ └── gflags
+ │ │ ├── gflags_completions.h
+ │ │ ├── gflags_declare.h
+ │ │ ...
+ │ └── lib
+ │ └── libgflags.a
+ ├── glog
+ │ ├── include
+ │ │ └── glog
+ │ │ ├── config.h
+ │ │ ...
+ │ └── lib
+ │ └── libglog.a
+ ├── openblas
+ │ ├── include
+ │ │ ├── cblas.h
+ │ │ ...
+ │ └── lib
+ │ ...
+ ├── protobuf
+ │ ├── include
+ │ │ └── google
+ │ │ └── protobuf
+ │ │ ...
+ │ └── lib
+ │ └── libprotobuf-lite.a
+ └── zlib
+ ├── include
+ │ ...
+ └── lib
+ ...
+
+```
+
+### Linking Description:
+
+There are three kinds of linking methods:
+
+1. Linking with dynamic library `libpaddle_capi_shared.so`(This way is much more convenient and easier, **Without special requirements, it is recommended**), refer to the following:
+ 1. Compiling with CPU version and using `OpenBLAS`; only need to link one library named `libpaddle_capi_shared.so` to develop prediction program through C-API.
+ 1. Compiling with CPU version and using `MKL` lib, you need to link MKL library directly to develop prediction program through PaddlePaddle C-API, due to `MKL` has its own dynamic library.
+ 1. Compiling with GPU version, CUDA library will be loaded dynamically on prediction program run-time, and also set CUDA library to `LD_LIBRARY_PATH` environment variable.
+
+2. Linking with static library `libpaddle_capi_whole.a`,refer to the following:
+ 1. Specify `-Wl,--whole-archive` linking options.
+ 1. Explicitly link third-party libraries such as `gflags`、`glog`、`libz`、`protobuf` .etc, you can find them under `PADDLE_ROOT/third_party` directory.
+ 1. Use OpenBLAS library if compiling C-API,must explicitly link `libopenblas.a`.
+ 1. Use MKL when compiling C-API, must explicitly link MKL dynamic library.
+
+3. Linking with static library `libpaddle_capi_layers.a` and `libpaddle_capi_engine.a`,refer to the following:
+ 1. This linking methods is mainly used for mobile prediction.
+ 1. Split `libpaddle_capi_whole.a` into two static linking library at least to reduce the size of linking libraries.
+ 1. Specify `-Wl,--whole-archive -lpaddle_capi_layers` and `-Wl,--no-whole-archive -lpaddle_capi_engine` for linking.
+ 1. The third-party dependencies need explicitly link same as method 2 above.