我正在尝试从源代码构建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
图像
我想分享一下我是如何解决这个问题的经验。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 checkcheckinstallgdb./configure --prefix=$HOME/.localmakemake installgmp
通过查看 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)
--- 稍后编辑 ---
虽然这个答案中的技术可行,但正确的答案是由姜达给出的。