【问题标题】:Installing pyinterval in ubuntu在 ubuntu 中安装 pyinterval
【发布时间】:2012-03-07 20:21:43
【问题描述】:

我正在尝试安装 python 库 pyinterval。它需要我安装的 crlibm C 头文件,没有错误,但似乎是问题的根源。

当我跑步时:

$ sudo easy_install pyinterval

我得到以下信息:

Searching for pyinterval
Reading http://pypi.python.org/simple/pyinterval/
Reading http://pyinterval.googlecode.com/
Best match: pyinterval 1.0b21
Downloading http://pypi.python.org/packages/source/p/pyinterval/pyinterval-1.0b21.tar.gz#md5=a65fe9855d3b6b0a9ddcc5b2f1e1e421
Processing pyinterval-1.0b21.tar.gz
Running pyinterval-1.0b21/setup.py -q bdist_egg --dist-dir /tmp/easy_install-K58WK9/pyinterval-1.0b21/egg-dist-tmp-Tp03Mb
ext/crlibmmodule.c: In function ‘crlibm_cospi_rn’:
ext/crlibmmodule.c:45:1: warning: implicit declaration of function ‘cospi_rn’
ext/crlibmmodule.c: In function ‘crlibm_cospi_ru’:
ext/crlibmmodule.c:45:1: warning: implicit declaration of function ‘cospi_ru’
...
ext/crlibmmodule.c: In function ‘crlibm_log1p_rz’:
ext/crlibmmodule.c:59:1: warning: implicit declaration of function ‘log1p_rz’
/usr/bin/ld: /usr/local/lib/libcrlibm.a(addition_scs.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libcrlibm.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
error: Setup script exited with error: command 'gcc' failed with exit status 1

我打过电话:

$ sudo apt-get install python-all-dev

这并没有解决问题。

【问题讨论】:

    标签: python c ubuntu-11.04


    【解决方案1】:

    如果有人对此仍有疑问,您需要在“scs_lib/Makefile”中设置“CPPFLAGS = -fPIC”,而不是“./Makefile”。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,我发现问题出在 crlibm 上(错误中提到了标志 -fPIC)。

      我最终从源代码安装了 crlibm,并且能够使安装工作正常进行。为 crlibm 运行 ./configure 后,我通过将“CPPFLAGS =”行更改为“CPPFLAGS = -fPIC”行来手动编辑 Makefile。从这里我运行“make”、“make install”,然后运行“sudo easy_install pyinterval”。

      我要补充一点,我对这个解决方案不是 100% 有信心,而且它不是很优雅。我不确定 -fPIC 标志的技术细节,以及它的真正作用。

      但它确实有效。

      【讨论】:

      • 非常感谢。这样可行!我是发布问题的新手,所以我几乎放弃了所有希望。 :-D
      【解决方案3】:

      对我来说似乎没问题:

      wget http://lipforge.ens-lyon.fr/frs/download.php/152/crlibm-1.0beta3.tar.gz
      tar vfxz crlibm-1.0beta3.tar.gz 
      cd crlibm-1.0beta3
      export CPPFLAGS=-fPIC
      ./configure
      make
      sudo make install
      sudo pip install pyinterval
      python
      >>> from interval import *
      

      感谢您的回答。

      【讨论】:

        【解决方案4】:

        我刚刚使用上述关于 crlibm 的建议在 ubuntu 12.10 上安装了 pyinterval。

        我尝试在 scs_lib Makefile 中将 -fPIC 添加到 CPPFLAGS 中,但没有成功。我认为 crlibm 的更高版本(我使用的是 1.0beta-4)要求 crlibm_private.o 也使用 -fPIC 编译,因此需要将标志添加到基目录的 Makefile 中的 CPPFLAGS 中

        【讨论】:

          猜你喜欢
          • 2014-02-22
          • 2019-04-25
          • 2019-03-05
          • 2015-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多