我正在尝试按照ubuntu 12.04 LTS下https://code.google.com/p/gmpy/wiki/InstallingGmpy2中的说明安装gmp2。
因此我需要编译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的错误:
/ bin / sh ../libtool --tag = CC --mode = compile gcc -std = gnu99 -DHAVE_CONFIG_H -I。 -I .. -D__GMP_WITHIN_GMP -I .. -DOPERATION _
echo fib_table | sed 's/_$//'
-m32 -O2 -pedantic -fomit-frame-pointer -mtune = core2 -march = core2 -c -o fib_table.lo fib_table.c
../libtool:1581:../ libtool:preserve_args + = --tag CC:未找到
../libtool:1:eval:base_compile + = gcc:未找到
../libtool:1:eval:base_compile + = -std = gnu99:未找到
../libtool:1:eval:base_compile + = -DHAVE_CONFIG_H:未找到
../libtool:1:eval:base_compile + = -I。:未找到
../libtool:1:eval:base_compile + = -I ..:未找到
../libtool:1:eval:base_compile + = -D__GMP_WITHIN_GMP:未找到
../libtool:1:eval:base_compile + = -I ..:未找到
../libtool:1:eval:base_compile + = -DOPERATION_fib_table:未找到
../libtool:1:eval:base_compile + = -m32:未找到
../libtool:1:eval:base_compile + = -O2:未找到
../libtool:1:eval:base_compile + = -pedantic:not found
../libtool:1:eval:base_compile + = -fomit-frame-pointer:not found
../libtool:1:eval:base_compile + = -mtune = core2:not found
../libtool:1:eval:base_compile + = -march = core2:not found
../libtool:1:eval:base_compile + = -c:未找到
libtool:compile:必须指定编译命令
libtool:compile:尝试'libtool --help --mode = compile'以获取更多信息。 make [2]:*** [fib_table.lo]错误1
make [2]:离开目录'/home/nicolas/Dropbox/crypto/gcc-lib/gmp-5.1.3/mpn'
make [1]:*** [all-recursive]错误1
make [1]:离开目录'/home/nicolas/Dropbox/crypto/gcc-lib/gmp-5.1.3' make:*** [all]错误2
我怀疑以 / bin / sh 为前缀的libtool调用是错误的,但我无法知道如何更改它:
知道如何完成编制GMP吗?
答案 0 :(得分:2)
正如您所说,这是因为对libtool
的调用以[{1}}为前缀而您的/bin/sh
实施(我的有根据的猜测:/bin/sh
)未实现{ {1}}语法(不是POSIX功能)。 dash
本身有+=
作为hashbang。
如果您无法确定libtool
前缀的来源,可以通过更改以下所有内容来“修复”/bin/bash
本身:
SHELL
到
libtool
请注意,这是一个快速入侵,您应该修复使用base_compile+=" ${foo}"
调用base_compile="${base_compile} ${foo}"
的基础问题。
(我在尝试构建libtool
时由于shellshock将默认shell从/bin/sh
切换到bash
后遇到了同样的问题。)
答案 1 :(得分:0)
apr
调用/usr/share/apr-1/libtool
下的内部libtool,它与您通常使用的不同。
可能是为了避免环境问题并且讽刺性地创建编译器问题:mv arp-1/libtool
到apr-1/libtool.bak
和ln -sv /usr/bin/libtool
到/usr/share/apr-1/libtool
会解决这个问题,无论您的环境或调用方法如何。
同样,检查调用libtool
的位置。许多源包都是从内部二进制文件构建的,可能与您的系统不兼容。
答案 2 :(得分:0)
正如错误日志所说:找不到 gcc 表示您没有安装 gcc(gnu c 编译器)。
运行 sudo apt-get install gcc && gcc --version