OpenSSL libraries are required to build OpenSSL-based applications. While trying to build by using gcc with openssl library and function the -lssl option is used. But you may get an error like “foo.cpp:21:25: error: openssl/bio.h: No such file or directory” which means the openssl library can not be found or not installed. In this tutorial, we will learn how to install OpenSSL libraries to build applications in Ubuntu, Debian, Mint.
OpenSSL Headers and Build Errors
OpenSSL provides a lot of features for security. All of them are categorized under diffrent C header files. Below we list some of the most popular OpenSSL library headers. If you need one of them the OpenSSL library should be installed for the current operating system.
#include <openssl/bio.h>
#include <openssl/buffer.h>
#include <openssl/des.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>
If the OpenSSL development library is not installed when you try to build the C application with OpenSSL library dependency you will get the following errors. The build operation with the OpenSSL library can be start with the following gcc command.
gcc -lssl sample.cpp
sample.cpp:21:25: error: openssl/bio.h: No such file or directory
sample.cpp:22:28: error: openssl/buffer.h: No such file or directory
sample.cpp:23:25: error: openssl/des.h: No such file or directory
sample.cpp:24:25: error: openssl/evp.h: No such file or directory
sample.cpp:25:25: error: openssl/pem.h: No such file or directory
sample.cpp:26:25: error: openssl/rsa.h: No such file or directory
Install OpenSSL Development Libraries and Packages
The OpenSSL Development Libraries and Packages are provided with the name “libssl-dev”. The “libssl-dev” is the package name for the Ubuntu, Debian, Mint, and related apt-based distributions. Before installing the OpenSSL development libraries and package we can display information about it.
apt show libssl-dev
Package: libssl-dev Version: 1.1.1f-1ubuntu4.3 Priority: optional Section: libdevel Source: openssl Origin: Ubuntu Maintainer: Ubuntu Developers [email protected] Original-Maintainer: Debian OpenSSL Team [email protected] Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 8.050 kB Depends: libssl1.1 (= 1.1.1f-1ubuntu4.3) Suggests: libssl-doc Conflicts: libssl1.0-dev Homepage: https://www.openssl.org/ Download-Size: 1.586 kB APT-Manual-Installed: yes APT-Sources: http://tr.archive.ubuntu.com/ubuntu groovy-updates/main amd64 Packages Description: Secure Sockets Layer toolkit - development files This package is part of the OpenSSL project's implementation of the SSL and TLS cryptographic protocols for secure communication over the Internet. . It contains development libraries, header files, and manpages for libssl and libcrypto. N: There is 1 additional record. Please use the '-a' switch to see it
By using the following command the OpenSSL Development Libraries and package can be installed.
sudo apt install libssl-dev
The package name “libssl” is the name of the package and the “dev” is used specify that this package is a development library.
If you are using apt-get command instead of the apt in order to manage packages you can use the following command to install OpenSSQL development libraries and package.
sudo apt-get install libssl-dev
Install OpenSSL Development Libraries From Source
Alternatively the OpenSSL Development libraries can be installed from the source code. First the source code should be compiled into the binary and then installed properly. The adventage of the using source code is we can select whatever version we want. There is no dependency to the specific version provided by the Linux distribution. Disadventage of installing OpenSSL develpoment libraries from source is it is not easy as installing with package manager. There are multiple steps for this.
Download the OpenSSL source code from the openssl.org. You can select whatever version you want. In this example we download openssl-1.0.1.
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
Extract the compressed openssl source code with the tar command.
tar -xvzf openssl-1.0.1g.tar.gz
Navigate too the extracted openssl directory.
cd openssl-1.0.1g
Configure the openssl source code for compile operation.
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
Compile the openssl and development libraries with the make command.
make
Install the compiled openssl binaries and development libraries with the “make install” command.
make install
Navigate to the OpenSSL installation directory and execute openssl command in order to check its version.
/usr/local/openssl/bin/openssl version
The output is like below.
OpenSSL 1.0.1g 7 Apr 2015