Guideline #1: Compile with regular account, never as ‘root’.
The root has privileges to mess up the entire system. That is a “learning experience” too, but for another day.
The FFmpeg guide seems to do it “right”.
A traditional build has three steps:
-
configure : Generates instructions into ‘Makefile’
-
make : program ‘make’ does use Makefile to run compiler
-
make install : program ‘make’ does use Makefile to copy result into “production”
The configure looks at your system to check what it can see. What it does find, it does use in the instructions.
The project may have some must have requirements. If they are not found, then configure fails.
The project may have some optional requirements. If they are found, then configure adds a feature to program.
You can give configure options, like --with-mpi
, --prefix=somepath
, etc. The project defines what options can be used. The with/without options allow to require require that are not ‘must have’ by default, or leave out features even when they could be built in.
That guide for FFmpeg shows that its configure does have --extra-xyz
and --enable-xyz
style options.
You can probably see the list of possible options with:
./configure --help
I’d look for ssl/tls-related options from it.
Compilation (of C/C++ source to executable) has steps:
-
Preprocessor prepares “translation units” by expanding macros and directives, such as
#include
-
Compiler generates object file from each translation unti
-
Linker combines object files into executable binary
The compiler needs declarations of functions and definitions of types in order to compile source code that does refer to those external types and functions. The definitions are in header files.
The linker needs object code of external libraries that inmplements the external functions.
The configure most likely seeks files (headers and library shared objects) from a set of directories.
The openssl is in two packages: openssl
and openssl-devel
. The first has the library that running programs use. The second has the headers, etc that the compilation does need.
If you don’t have the ‘openssl-devel’ installed, then your configure won’t find openssl.