2014-03-01 87 views
2

我想按照在Ubuntu 12.04 LTS下的https://code.google.com/p/gmpy/wiki/InstallingGmpy2中的说明安装gmp2。LIBTOOL在尝试编译GMP时失败

因此我需要编译GMP,MPFR和MPC。

要编译GMP,根据上面的说明,我需要:

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

的./configure步工作得很好,虽然我曾与/斌/庆典前缀的命令

当我调用使命令,我碰到这个错误涉及的libtool:

/bin/sh的../libtool --tag = CC --mode =编译的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:not foun d
../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:找不到
../libtool: 1:EVAL:base_compile + = -fomit帧指针:找不到
../libtool:1:EVAL:base_compile + = -mtune =核2:未发现
../libtool:1:EVAL:base_compile + = -march = core2:未找到
libtool:compile:必须指定编译命令
libtool:compile:尝试'libtool --help --mode = compile'以获取更多信息。 make [2]:*** [fib_table.lo] Error 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'
化妆:*** [全部]错误2

我怀疑是libtool的呼叫通过前缀/bin/sh的是错误的,但我不明白怎么改:

  • 在Makefile中,我改变了SHELL =/bin/sh的为Shell = /斌/庆典:没有区别
  • 当我 “printenv SHELL”,我获得/斌/庆典

任何想法如何完成编译GMP?

+1

你试过了:'sudo apt-get install libmpc-dev'? –

+0

你为什么要安装版本5.1.0而不是5.1.3(最新的)? –

回答

2

正如你所说的,这是因为到libtool调用就会通过/bin/sh和你/bin/sh实现前缀(我的猜测:dash)不执行+=语法(这不是一个POSIX功能)。 libtool本身有/bin/bash作为hashbang。

如果无法揣摩出你的SHELL前缀来自于你可以通过改变所有occurrances“修复” libtool本身:

base_compile+=" ${foo}" 

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

注意,这是一个快速入侵,您应该修复与/bin/sh的潜在问题。

(我遇到了同样的问题,试图建立apr-util时默认的shell从bashdash开关由于弹震后)。

+1

哇,修正了编译不同内容时遇到的很多错误。 – Dschoni

0

apr/usr/share/apr-1/libtool这是一个你通常使用不同的下调用内部的libtool。

可能避免环境问题,具有讽刺意味的创建编译器的问题:mv arp-1/libtoolapr-1/libtool.bakln -sv /usr/bin/libtool/usr/share/apr-1/libtool可以解决这个问题,无论您的环境或调用方法。

相似,请检查从哪里调用libtool。许多源代码包都是由内部的二进制文件构建的,这些二进制文件可能与您的系统不兼容