6

我正在尝试Bio::DB::Sam在远程服务器上的主目录上安装 perl 模块。

我下载了模块,提取了文件,然后运行:

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。

任何帮助,将不胜感激。

干杯

4

4 回答 4

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 项目最近经历了一些重大的代码重组(这自然使得使用外部语言绑定变得困难)。

于 2014-09-01T19:05:51.027 回答
1

我通过使用 -fPIC 参数重新制作 samtools 解决了这个问题

make clean
make CXXFLAGS=-fPIC CFLAGS=-fPIC CPPFLAGS=-fPIC

然后使用cpan安装。

cpan[2]> install Bio::DB::Sam 
于 2014-11-03T01:12:36.657 回答
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
于 2016-05-27T03:11:09.333 回答
0

我按照 Bio-SamTools-1.43 下面的 README 文件中的说明在 samtools 0.1.17 中编辑 Makefile。然后,要安装,我用

perl -MCPAN -e shell install Bio::DB::Sam

自述文件:

这是 SAMtools 序列比对接口的 Perl 接口。它仅适用于 Samtools 最高 0.1.17 的版本。由于库结构的重大变化,它不适用于 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 ./Build test (sudo) ./Build install

故障排除:

如果在编译过程中遇到问题,您可能需要编辑 Build.PL 以使 extra_compiler_flags 与 Samtools Makefile 中的 CFLAGS 和 DFLAGS 设置相匹配。以下是一些常见问题:

  1. 构建此模块时,您会收到如下错误:relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; 使用 -fPIC 重新编译

要解决此问题,请通过将“-fPIC”添加到 CFLAGS 行来编辑 Samtools 发行版中的 Makefile。当您使用它时,您可能还希望摆脱出现在最新版本的 gcc 下的一堆未使用的变量警告。修改后的 CFLAGS 将如下所示

CFLAGS= -g -Wall -Wno-unused -Wno-unused-result -O2 -fPIC #-m64 #-arch ppc

然后在 Samtools 目录中执行“make clean; make”以重新编译库。在此之后,您应该能够构建此模块而不会出错。

  1. 构建此模块时,您会收到有关缺少数学库的错误。

要解决此问题,请按照 (1) 中的配方,除了将 -m64 添加到 CFLAGS 之外,它看起来像这样:

CFLAGS= -g -Wall -O2 -fPIC #-m64 #-arch ppc

测试和贡献:

您可以通过其 GitHub 站点https://github.com/GMOD/GBrowse-Adaptors获取此模块的最新开发版本。请随时通过 GitHub 提交错误报告、补丁等。

作者:

林肯·D·斯坦

版权所有 (c) 2009-2015 安大略癌症研究所

该软件包及其随附的库是免费软件;您可以根据艺术许可 2.0、Apache 2.0 许可或 GNU 通用公共许可(版本 1 或更高版本)的条款重新分发和/或修改它。有关完整的许可证文本,请参阅许可证。

于 2017-02-28T14:01:51.027 回答