Tzalumen
Tzalumen

Reputation: 660

Why won't find_library find libgmp

I'm trying to build a cmake project, and the repo I have been given has the lines

find_library(gmp gmp)
if(NOT gmp)
  message(FATAL_ERROR "gmp not found")
endif()

which cause CMake configuration to fail.

I have been told this CMake works on Redhat Enterprise Linux 7.3.

I have also been told this repo should build in any Linux environment with the correct libraries installed, and an Ubuntu environment has been specifically referenced.

I am building in Debian 9.4.0, I have installed gmp, libgmp.so is located at /usr/lib/x86_64-linux-gnu/openssl-1.0.2/engines/libgmp.so and I also have a libgmp.so.10 at /usr/lib/x86_64-linux-gnu/libgmp.so.10.

So, to recap, I have been handed a repo I have been told builds, but it does not build, it fails at this specific step, and I can't get google to give me any relevant results on how to fix the issue/what I am doing wrong.

Upvotes: 2

Views: 2535

Answers (2)

Tzalumen
Tzalumen

Reputation: 660

libgmp is installed, but the development libraries are not.

Cmake find_libraries looks for the files required for software development, and while the libgmp package is installed, the libgmp-dev package is not.

Install libgmp-dev.

Upvotes: 1

Tsyvarev
Tsyvarev

Reputation: 65928

CMake doesn't search "so-version" files:

If find_library is called for "gmp" library name, CMake searches libgmp.so file, but not libgmp.so.10 one.

Normally, the library file without so-version is just a soft link to the newest so-version file. If your Linux distro doesn't create such link, you may create it manually:

ln -s libgmp.so libgmp.so.10

If you want CMake to find /usr/lib/x86_64-linux-gnu/openssl-1.0.2/engines/libgmp.so file, which is not under directory normally searched by CMake, you need to hint CMake about it. E.g. with PATHS option:

find_library(gmp gmp PATHS "/usr/lib/x86_64-linux-gnu/openssl-1.0.2/engines")

Upvotes: 0

Related Questions