gcc 尝试编译GMP时LIBTOOL失败

wvt8vs2t  于 2022-11-13  发布在  其他
关注(0)|答案(4)|浏览(223)

我正在尝试安装gmp 2,如在ubuntu12.04LTS下的https://code.google.com/p/gmpy/wiki/InstallingGmpy2中所解释的。
因此,我需要编写GMP、MPFR和MPC。
为了编写GMP,根据上述说明,我需要:

$ cd ~/src/gmp-5.1.0
$ ./configure --prefix=/home/case/local
$ make
$ make check
$ make install

./configure***步骤运行良好,尽管我不得不在命令前面加上/bin/bash***。

当我调用***make***命令时,遇到了以下涉及libtool的错误:
我的意思是说,如果你想在一个文件中找到一个新的文件,那么你可以在一个新的文件中找到一个新的文件,这个文件就是你的文件。
../libtool:1581的文件名:../lib工具:保留参数+= --标签抄送:未找到
../libtool:1:eval:基本编译+= gcc:未找到
../libtool:1:编译器的参数:未找到
../libtool:1:如果您有任何问题,请使用以下命令:未找到
../libtool:1:编译器:未找到
../libtool:1:编译器:未找到
../libtool:1:评估:基本编译+= -D GMP范围内的GMP:未找到
../libtool:1:编译器:未找到
../libtool:1:评估:基本编译+= -DOPERATION_fib_表:未找到
../libtool:1:编译器:未找到
../libtool:1:编译器:基本编译+= -O2:未找到
../libtool:1:eval:base_compile+= -学究式的:未找到
../libtool:1:eval:base_compile+= -格式帧指针:未找到
../libtool:1:编译器:未找到
../libtool:1:编译器:未找到
../libtool:1:编译器:未找到
libtool:编译器:必须指定编译命令
libtool:编译器:请尝试使用“libtool --help --mode=compile”以获取更多信息。make[2]:***[fib_table.lo]错误1
创建[2]:正在离开目录“/home/nicolas/Dropbox/crypto/gcc-lib/gmp-5.1.3/mpn”
make[1]:***[全部递归]错误1
创建[1]:正在离开目录“/home/nicolas/Dropbox/crypto/gcc-lib/gmp-5.1.3”
make:***[全部]错误2
我怀疑以***/bin/sh***为前缀的libtool调用是错误的,但我不知道如何更改它:

  • 在MakeFile中,我将SHELL=/bin/sh更改为SHELL=/bin/bash:无差别
  • 当我“printenv SHELL”时,我得到/bin/bash

如何完成GMP的编制?

eyh26e7m

eyh26e7m1#

正如您所说的,这是因为对libtool的调用以/bin/sh为前缀,而您的/bin/sh实现(我有根据的猜测:dash)不实现+=语法(这不是POSIX特性)。libtool本身将/bin/bash作为hashbang。
如果您无法确定您的SHELL前缀来自何处,您可以通过更改所有出现的以下内容来“修复”libtool本身:

base_compile+=" ${foo}"

base_compile="${base_compile} ${foo}"

请注意,这是一个快速的黑客,您应该更好地解决底层问题,即用/bin/sh调用libtool
(在尝试构建apr-util时,由于shellshock,我在将默认shell从bash切换到dash后遇到了同样的问题。)

eqqqjvef

eqqqjvef2#

apr/usr/share/apr-1/libtool下调用一个内部libtool,它与您通常使用的libtool不同。
可能是为了避免环境问题和具有讽刺意味的编译器问题:mv arp-1/libtoolapr-1/libtool.bakln -sv /usr/bin/libtool/usr/share/apr-1/libtool将修复此问题,而不管您的环境或调用方法如何。
类似地,检查libtool是从哪里调用的。很多源代码包是从内部二进制文件构建的,可能与您的系统不兼容。

nkcskrwz

nkcskrwz3#

如错误日志所示:找不到gcc表示您没有安装gcc(gnu c编译器)。
运行sudo apt-get install gcc && gcc --version

disbfnqx

disbfnqx4#

确保安装了libtool-bin软件包。

sudo apt-get install libtool-bin

如果只有libtoolwhich libtool命令将打印/mnt/c/MinGW/bin/libtool
安装libtool-bin后,which libtool命令将打印/usr/bin/libtool
这在某种程度上为我解决了这个问题,希望这对某些人有帮助。

相关问题