为什么find_library找不到libgmp

时间:2018-05-02 01:27:58

标签: cmake debian

我正在尝试建立一个cmake项目,而且我获得的回购有行

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

导致CMake配置失败。

我被告知这个CMake适用于Redhat Enterprise Linux 7.3。

我也被告知这个repo应该在任何安装了正确库的Linux环境中构建,并且已经专门引用了Ubuntu环境。

我在Debian 9.4.0中构建,我已经安装了gmp,libgmp.so位于/usr/lib/x86_64-linux-gnu/openssl-1.0.2/engines/libgmp.solibgmp.so.10也有/usr/lib/x86_64-linux-gnu/libgmp.so.10

所以,回顾一下,我已经交了一个我已被告知构建的回购,但它没有构建,它在这个特定步骤失败了,我不能让谷歌给我任何有关如何修复的相关结果问题/我做错了什么。

2 个答案:

答案 0 :(得分:1)

已安装libgmp,但未安装开发库。

Cmake find_libraries查找软件开发所需的文件,并且在安装libgmp软件包时,没有找到libgmp-dev软件包。

安装libgmp-dev。

答案 1 :(得分:0)

CMake 搜索“so-version”文件:

如果为“gmp”库名调用find_library,则CMake会搜索libgmp.so个文件,但不会搜索libgmp.so.10个文件。

通常,没有so-version的库文件只是最新的so-version文件的软链接。如果您的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")