HOME

Notes & self tips

libsignal-protocol-c building

For some reason, there is no explicit description for BUILD_SHARED_LIBS cmake flag, so default cmake .. behavior will only generate static .a library.

One can find the mentioned flag in the src/CMakeLists.txt file to get a clue how to build .so library to link your code against. BUT, for some retarded reason, in that case cmake will ignore LIB_SUFFIX flag, and .so file will always be installed to PREFIX/lib; it will confuse the default ld mechanism and break library search behavior on Slackware and probably another systems that explicitely distinguish x86 and x86_64 lib pathes.

To fix that you should use that cmake line:

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=yes -DLIB_INSTALL_DIR=/usr/local/lib64 ..

You can find a reference to LIB_INSTALL_DIR flag in the main CMakeLists.txt file in root directory of cloned git repo.