运行snap-aligner提示需要glibc 2.14, 然而集群系统自带版本是2.12, 所以需要升级, 考虑到系统稳定性, 决定找个别的地方编译升级之
snap-aligner: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by snap-aligner)
下载
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
编译
tar -zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/prodata/ngs/glibc-2.14
make -j12
make install
错误处理
- 缺
ld.so.conf
/prodata/tmp/glibc-2.14/build/elf/ldconfig: Can't open configuration file /prodata/ngs/glibc-2.14/etc/ld.so.conf: No such file or directory
找找看系统里面有没有find / -type f -iname "ld.so.conf"
嗯, 很好, 系统里面有, 搬过去cp /etc/ld.so.conf /prodata/ngs/glibc-2.14/etc/ld.so.conf
然后再make install
搞定
指定动态库的查找路径
方法一: export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/XXX 但是登出后就失效 方法二: 修改~/.bashrc或~/.bash_profile或系统级别的/etc/profile
- 在其中添加例如export PATH=/opt/ActiveP/lib:$LD_LIBRARY_PATH
- source .bashrc (Source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录) 方法三:这个没有修改LD_LIBRARY_PATH但是效果是一样的实现动态库的查找,
- /etc/ld.so.conf下面加一行/usr/local/lib
- 保存过后ldconfig一下(ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.) 在rocks cluster 6.2的实际情况是方法三并无效果, 所以采用了方法二 具体做法:
vi ~/.bashrc
# 加一行
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/prodata/ngs/glibc-2.14/lib
# 保存退出
source ~/.bashrc
正常运行
snap-aligner
Welcome to SNAP version 1.0beta.18.
Usage: snap <command> [<options>]
Commands:
index build a genome index
single align single-end reads
paired align paired-end reads
daemon run in daemon mode--accept commands remotely
Type a command without arguments to see its help.
奇怪的错误
snap-aligner index nt COMP_SNAP -locationSize 8 -t48
Computed bias table in 222s
Allocating memory for hash tables...terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted