我正在尝试安装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
并没有解决问题。
答案 0 :(得分:3)
如果有人仍然遇到此问题,您需要在“scs_lib / Makefile”中设置“CPPFLAGS = -fPIC”,而不是“./Makefile”。
答案 1 :(得分:1)
我遇到了同样的问题,我发现问题出在crlibm上(错误中提到了标志-fPIC)。
我最终从源代码安装了crlibm,并且能够使安装正常运行。一旦我运行./configure for crlibm,我通过将“CPPFLAGS =”行更改为“CPPFLAGS = -fPIC”来手动编辑Makefile。从这里我运行“make”,“make install”,然后“sudo easy_install pyinterval”。
我要补充一点,我对这个解决方案并不是百分之百的自信,而且它不是很优雅。我不确定-fPIC标志的技术细节,以及它真正有什么影响。
但确实有效。
答案 2 :(得分:1)
它似乎对我有用:
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 *
感谢您的回答。
答案 3 :(得分:0)
我刚刚使用上面的crlibm建议在ubuntu 12.10上安装了pyinterval。
我尝试将-fPIC添加到scs_lib Makefile中的CPPFLAGS,但它不起作用。我认为crlibm的后续版本(我使用1.0beta-4)要求crlibm_private.o也使用-fPIC编译,因此需要将标志添加到基本目录的Makefile中的CPPFLAGS