Почему не find_library найти libgmp - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь построить проект cmake, и мне дано репо с строками

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

, что приводит к сбою конфигурации CMake.

Мне сказали, что этот CMake работает на Redhat Enterprise Linux 7.3.

Мне также сказали, что репозиторий должен быть встроен в любую среду Linux с установленными правильными библиотеками, а на среду Ubuntu была сделана конкретная ссылка.

Я собираю в Debian 9.4.0, я установил gmp, libgmp.so находится в /usr/lib/x86_64-linux-gnu/openssl-1.0.2/engines/libgmp.so и у меня также есть libgmp.so.10 на /usr/lib/x86_64-linux-gnu/libgmp.so.10.

Итак, резюмируя, мне передали репозиторий, мне сказали, что он строит, но он не строит, он терпит неудачу на этом конкретном этапе, и я не могу заставить Google дать мне какие-либо соответствующие результаты о том, как исправить вопрос / что я делаю не так.

Ответы [ 2 ]

0 голосов
/ 22 августа 2018

libgmp установлен, но библиотеки разработки не установлены.

Cmake find_libraries ищет файлы, необходимые для разработки программного обеспечения, и, хотя пакет libgmp установлен, пакет libgmp-dev - нет.

Установите libgmp-dev.

0 голосов
/ 02 мая 2018

CMake не поиск "so-version" файлы:

Если для имени библиотеки "gmp" вызывается find_library, CMake ищет файл libgmp.so, но не libgmp.so.10 один.

Обычно библиотечный файл без so-версии - это просто мягкая ссылка на новейший файл so-версии. Если ваш дистрибутив Linux не создает такую ​​ссылку, вы можете создать ее вручную:

ln -s libgmp.so libgmp.so.10

Если вы хотите, чтобы CMake нашел файл /usr/lib/x86_64-linux-gnu/openssl-1.0.2/engines/libgmp.so, который не находится в каталоге, обычно ищемом в CMake, вам нужно подсказка CMake об этом. Например. с опцией PATHS:

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