# How to build from source ## Requirements ### Common requirements In order to build libssh, you need to install several components: - A C compiler - [CMake](http://www.cmake.org) >= 2.6.0. - [openssl](http://www.openssl.org) >= 0.9.8 or - [gcrypt](http://www.gnu.org/directory/Security/libgcrypt.html) >= 1.4 optional: - [libz](http://www.zlib.net) >= 1.2 Note that these version numbers are version we know works correctly. If you build and run libssh successfully with an older version, please let us know. Windows binaries known to be working: - http://www.slproweb.com/products/Win32OpenSSL.html - http://zlib.net/ -> zlib compiled DLL We installed them in C:\Program Files ## Building First, you need to configure the compilation, using CMake. Go inside the `build` dir. Create it if it doesn't exist. GNU/Linux, MacOS X, MSYS/MinGW: cmake -DUNIT_TESTING=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug .. make On Windows you should choose a makefile gernerator with -G or use cmake-gui.exe .. ## Testing build make test ### CMake standard options Here is a list of the most interesting options provided out of the box by CMake. - CMAKE_BUILD_TYPE: The type of build (can be Debug Release MinSizeRel RelWithDebInfo) - CMAKE_INSTALL_PREFIX: The prefix to use when running make install (Default to /usr/local on GNU/Linux and MacOS X) - CMAKE_C_COMPILER: The path to the C compiler - CMAKE_CXX_COMPILER: The path to the C++ compiler ### CMake options defined for libssh Options are defined in the following files: - DefineOptions.cmake They can be changed with the -D option: `cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug -DWITH_ZLIB=OFF ..` ### Browsing/editing CMake options In addition to passing options on the command line, you can browse and edit CMake options using `cmakesetup` (Windows), `cmake-gui` or `ccmake` (GNU/Linux and MacOS X). - Go to the build dir - On Windows: run `cmakesetup` - On GNU/Linux and MacOS X: run `ccmake ..` ### Useful Windows options: If you have installed OpenSSL or ZLIB in non standard directories, maybe you want to set: OPENSSL_ROOT_DIR and ZLIB_ROOT_DIR ## Installing If you want to install libssh after compilation run: make install ## Running The libssh binary can be found in the `build/src` directory. You can use `build/examples/samplessh` which is a sample client to test libssh on UNIX. ## About this document This document is written using [Markdown][] syntax, making it possible to provide usable information in both plain text and HTML format. Whenever modifying this document please use [Markdown][] syntax. [markdown]: http://www.daringfireball.net/projects/markdown