配置从源代码构建 gdb 时缺少 gmp

use*_*879 5 gdb gmp

我正在尝试从源代码构建gdb,版本是11.1。我已经配置了 GMP 包括路径,但配置脚本仍然报错。

configure: error: GMP is missing or unusable
Run Code Online (Sandbox Code Playgroud)

我复制了配置日志。

configure:10433: checking for libgmp
configure:10453: gcc -o conftest -g -O2      conftest.c -lncurses -lm -ldl  -lgmp >&5
conftest.c:53:17: fatal error: gmp.h: No such file or directory

Run Code Online (Sandbox Code Playgroud)

我的配置命令如下所示。

configure --prefix=/home/xxx/ins/gdb_11 --with-gmp-include=/home/xxx/ins/gmp-6.2.1/include --with-gmp-lib=/home/xxx/ins/gmp-6.2.1/lib
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?

小智 9

确保您已安装 libgmp-dev

我的操作系统是ubuntu 20.04

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libgmp-dev
wget http://ftp.gnu.org/gnu/gdb/gdb-11.2.tar.gz
tar -xvzf gdb-11.2.tar.gz
./configure
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

安装GDB后,可以打印GDB版本来测试是否安装正确。
gdb --version 图像


小智 5

您可以使用 gdb 的配置选项:

  --with-libgmp-prefix="path to gmp"
Run Code Online (Sandbox Code Playgroud)


amo*_*rdo 5

我想分享一下我是如何解决这个问题的经验。sudo服务器上没有。
首先,GMP从网站下载源(其证书现已过期)。我用了wget --no-check-certificate "https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz"。提取tar -xf gmp-6.2.1.tar.xz; 在其目录中./configure --prefix=$HOME/.local,,,(安装程序礼貌地询问,由于某种原因make目标仅在之后执行)。 最后对提取的源进行的操作:在 gdb 目录, , . 没有遇到错误。make installmake checkcheckinstall
gdb./configure --prefix=$HOME/.localmakemake installgmp


And*_*rew 3

通过查看 GDB 的配置脚本,我认为问题在于 GDB 没有选择 --with-gmp-include 和 --with-gmp-lib 配置标志。这些标志在顶层配置脚本中处理,并通过环境提供给每个子组件(GDB、binutils、ld 等),并且看起来 GDB 没有选择这些标志。

最简单的前进方法是在配置时覆盖 CFLAGS 和 CXXFLAGS,例如:

configure CFLAGS="-I/gmp/include/path -L/gmp/lib/path" CXXFLAGS="-I/gmp/include/path -L/gmp/lib/path"
Run Code Online (Sandbox Code Playgroud)

--- 稍后编辑 ---

虽然这个答案中的技术可行,但正确的答案是由姜达给出的。