2014-03-01 83 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。許多源代碼包都是由內部的二進制文件構建的,這些二進制文件可能與您的系統不兼容