This document provides generic information for compiling EncFS.
If you are looking for specific instructions for your operating system or distribution, take a look at the wiki.
EncFS is now primarily implemented in Rust. To build:
cargo build --release
To run tests:
cargo test
To install:
cargo install --path .
Dependencies: * Rust toolchain (stable or nightly) * FUSE library (libfuse or OSXFUSE on macOS) * OpenSSL development libraries
The original C++ implementation has been moved to the legacy/ directory.
To build the legacy version:
cd legacy
mkdir build
cd build
cmake ..
make
If CMake can't find FUSE or OpenSSL, you can use the following options:
cmake .. -DFUSE_ROOT_DIR=/pathto/fuse -DOPENSSL_ROOT_DIR=/pathto/openssl
Optional, but strongly recommended, is running the unit and integration tests to verify that the generated binaries work as expected. Unit tests will run almost instantly:
make unittests
make test
Integration tests will take ~20 seconds to run and will mount an
encrypted filesystem and run tests on it:
running integration tests from root (or with sudo) will run additional ones
make integration
The compilation process creates two executables, encfs and encfsctl. You can install to in a system directory via:
make install
If the default path (/usr/local) is not where you want things
installed, then set the CMAKE_INSTALL_PREFIX option when running cmake. Eg:
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/local
Encfs and encfsctl can also be installed by hand. They need no special permissions. You may also want the man pages encfs.1 and encfsctl.1.
The legacy C++ implementation depends on:
* fuse : the userspace filesystem layer
* openssl / libressl : used for cryptographic primitives
* tinyxml2 (embeded) : for reading and writing XML configuration files
* gettext : internationalization support
* libintl : internationalization support
* cmake : version 3.0.2 (Debian jessie version) or newer
* GNU make / ninja-build : to run the build for cmake