我正在尝试在远程服务器上的主目录上安装perl模块Bio::DB::Sam
。
我下载了模块,解压缩了文件,并运行了:
perl Build.pl prefix=~/local
接下来会发生什么:
This module requires samtools 0.1.10 or higher (samtools.sourceforge.net).
Please enter the location of the bam.h and compiled libbam.a files: **/some_places/samtools-0.1.19**
Found /some_places/samtools-0.1.19/bam.h and /some_places/samtools-0.1.19/libbam.a.
Created MYMETA.yml and MYMETA.json
Creating new 'Build' script for 'Bio-SamTools' version '1.39'
接下来当我尝试跑步时:
./Build
这就是我得到的:
Building Bio-SamTools
gcc -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -o blib/arch/auto/Bio/DB/Sam/Sam.so lib/Bio/DB/Sam.o c_bin/bam2bedgraph.o -L/some_places/samtools-0.1.19 -lbam -lpthread -lz
/usr/bin/ld: /some_places/samtools-0.1.19/libbam.a(bgzf.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/some_places/samtools-0.1.19/libbam.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
error building blib/arch/auto/Bio/DB/Sam/Sam.so from lib/Bio/DB/Sam.o c_bin/bam2bedgraph.o at ~/perl5/lib/perl5/ExtUtils/CBuilder/Base.pm line 323.
我确实谷歌了解了可能的解决方案并尝试了一对,但它们没有用,例如--enable-shared OR export CXXFLAGS="$CXXFLAGS -fPIC"
。
我已经在我的主目录中安装了Bioperl。
任何帮助都将不胜感激。
干杯
答案 0 :(得分:7)
这是一个脚本,它将获取SAMtools源并对其进行编译,然后获取并编译Perl绑定。
wget http://sourceforge.net/projects/samtools/files/samtools/0.1.18/samtools-0.1.18.tar.bz2
tar xjf samtools-0.1.18.tar.bz2 && cd samtools-0.1.18
make CFLAGS=-fPIC
export SAMTOOLS=`pwd`
cpanm Bio::DB::Sam
您可能看到的部分问题是SAMtools项目最近经历了一些主要的代码重组(这自然使得很难使用外部语言绑定)。
答案 1 :(得分:1)
我通过使用-fPIC参数
重新设置samtools来修复此问题make clean
make CXXFLAGS=-fPIC CFLAGS=-fPIC CPPFLAGS=-fPIC
然后使用cpan安装。
cpan[2]> install Bio::DB::Sam
答案 2 :(得分:1)
[解决]
wget http://sourceforge.net/projects/samtools/files/samtools/0.1.18/samtools-0.1.18.tar.bz2
tar xjf samtools-0.1.18.tar.bz2 && cd samtools-0.1.18
make CFLAGS=-fPIC
在终端输入cpan
并输入
install Bio::DB::Sam
小心点:
您无法使用以下命令:
perl -MCPAN -Mlocal :: lib -e' CPAN :: install(Bio :: DB :: Sam)'
您只能使用cpan然后使用
install Bio::DB::Sam
答案 3 :(得分:0)
我按照Bio-SamTools-1.43下面的README文件中的说明编辑samtools 0.1.17中的Makefile。然后,要安装,我用
perl -MCPAN -e shell 安装Bio :: DB :: Sam
自述文件:
这是SAMtools序列比对的Perl接口 接口。它仅适用于最高0.1.17的Samtools版本。确实如此 由于库中的重大更改,无法在1.0版或更高版本上运行 结构
有关samtools文档,请参阅http://samtools.sourceforge.net/。
在此发行版的根目录中,您将找到该脚本 INSTALL.pl。运行此命令将下载此版本的最新版本 模块和SamTools进入一个临时目录,编译它们,测试和 安装。只需运行:
perl INSTALL.pl
更传统的安装需要您单独下载, 在一些可访问的内容中解压缩并编译SAMtools 0.1.10到0.1.17 目录。通常在samtools目录中键入“make” 工作。 SAMtools版本0.1.18及更高版本不适用于此 库。
然后将环境变量SAMTOOLS设置为指向此目录。
您还需要从CPAN安装Bio :: Perl。
现在运行:
perl Build.PL 。/建立 ./Build测试 (sudo)./Build install
故障:
如果在编译过程中遇到问题,则可能需要进行编辑 Build.PL使extra_compiler_flags与CFLAGS和DFLAGS匹配 Samtools Makefile中的设置。以下是一些常见问题:
要解决此问题,请通过添加来编辑Samtools发行版中的Makefile “-fPIC”到CFLAGS系列。当你在这里时,你可能也希望 摆脱出现在下面的一堆未使用的变量警告 最新版本的gcc。修改后的CFLAGS将如下所示
CFLAGS = -g -Wall -Wno-unused -Wno-unused-result -O2 -fPIC#-m64#-arch ppc
然后在Samtools目录中执行“make clean; make”以重新编译 图书馆。在此之后,您应该能够在没有的情况下构建此模块 错误。
要解决此问题,请按照(1)中的配方进行操作,只是将-m64添加到CFLAGS即可 看起来像这样:
CFLAGS = -g -Wall -O2 -fPIC#-m64#-arch ppc
测试和贡献:
您可以通过以下方式获取此模块的最新开发版本 它的GitHub站点位于https://github.com/GMOD/GBrowse-Adaptors。请 随时通过GitHub提交错误报告,补丁等。
作者:
Lincoln D. Stein
版权所有(c)2009-2015安大略省癌症研究所
该软件包及其附带的库是免费软件;您可以 根据艺术条款重新分配和/或修改它 许可证2.0,Apache 2.0许可证或GNU通用公共许可证 (版本1或更高版本)。有关完整的许可证文本,请参阅LICENSE。