使用conda安裝bowtie2遇到undefined symbol報(bào)錯(cuò)
/public/home/xuzhougeng/miniconda3/envs/bsseq/bin/bowtie2-build-s: symbol lookup error: /public/home/xuzhougeng/miniconda3/envs/bsseq/bin/bowtie2-build-s/public/home/xuzhougeng/miniconda3/envs/bsseq/bin/bowtie2-build-s: undefined symbol: _ZN3tbb10interface78internal15task_arena_base19internal_initializeEv
: symbol lookup error: /public/home/xuzhougeng/miniconda3/envs/bsseq/bin/bowtie2-build-s: undefined symbol: _ZN3tbb10interface78internal15task_arena_base19internal_initializeEv
直接復(fù)制報(bào)錯(cuò)信息進(jìn)行谷歌檢索,沒有找到答案怒炸。
復(fù)制_ZN3tbb10interface78internal15task_arena_base19internal_initializeEv
進(jìn)行檢索累驮,定位到這個(gè)symbol由 tbb定義
tbb
使用ldd分析bowtie2-build-s的動(dòng)態(tài)鏈接刃鳄,發(fā)現(xiàn)libtbb的靜態(tài)鏈接是對(duì)應(yīng)的是系統(tǒng)的libtbb
ldd
切換到anaconda的動(dòng)態(tài)庫目錄中诅炉,發(fā)現(xiàn)沒有l(wèi)ibtbb.so.2
image.png
因此最容易想到的解決方案就是
ln -s libtbb.so.12 libtbb.so.2
但是依然會(huì)報(bào)錯(cuò)黑滴。因?yàn)槌霈F(xiàn)undefined symbol的根本原因是罢荡,tbb有bioconda, main, conda-forge三個(gè)版本赡突,conda-forge是最新的結(jié)果,而我安裝bowtie2用的就是最新的conda-forge, 而非bowtie2構(gòu)建時(shí)候用的bioconda版本区赵。如果我系統(tǒng)沒有自帶tbb惭缰,那么報(bào)錯(cuò)就是 symbol not found, 而非undefined symbol。因此真正的解決方法是卸載tbb和bowtie2笼才,重新安裝(確保bioconda是最高優(yōu)先級(jí))
conda install -c bioconda bowtie2