安装libBigWig时遇ld无法找到-lz错误的求助
安装libBigWig时ld无法找到zlib的问题解决
问题背景
我正在安装WiggleTools的依赖库libBigWig,该库依赖zlib、bzip2和libcurl,我已完成这些依赖的安装。执行以下命令安装libBigWig:
git clone https://github.com/dpryan79/libBigWig.git cd libBigWig make install
错误信息
执行后出现链接器错误:
/home/dp456/miniconda3/envs/py37/bin/x86_64-conda-linux-gnu-cc -I. -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/dp456/miniconda3/envs/py37/include -DNOCURL -c -o io.o io.c /home/dp456/miniconda3/envs/py37/bin/x86_64-conda-linux-gnu-cc -I. -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/dp456/miniconda3/envs/py37/include -DNOCURL -c -o bwValues.o bwValues.c /home/dp456/miniconda3/envs/py37/bin/x86_64-conda-linux-gnu-cc -I. -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/dp456/miniconda3/envs/py37/include -DNOCURL -c -o bwRead.o bwRead.c /home/dp456/miniconda3/envs/py37/bin/x86_64-conda-linux-gnu-cc -I. -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/dp456/miniconda3/envs/py37/include -DNOCURL -c -o bwStats.o bwStats.c /home/dp456/miniconda3/envs/py37/bin/x86_64-conda-linux-gnu-cc -I. -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/dp456/miniconda3/envs/py37/include -DNOCURL -c -o bwWrite.o bwWrite.c /home/dp456/miniconda3/envs/py37/bin/x86_64-conda-linux-gnu-ar -rcs libBigWig.a io.o bwValues.o bwRead.o bwStats.o bwWrite.o /home/dp456/miniconda3/envs/py37/bin/x86_64-conda-linux-gnu-ranlib libBigWig.a /home/dp456/miniconda3/envs/py37/bin/x86_64-conda-linux-gnu-cc -I. -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/dp456/miniconda3/envs/py37/include -DNOCURL -fpic -c -o io.pico io.c /home/dp456/miniconda3/envs/py37/bin/x86_64-conda-linux-gnu-cc -I. -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/dp456/miniconda3/envs/py37/include -DNOCURL -fpic -c -o bwValues.pico bwValues.c /home/dp456/miniconda3/envs/py37/bin/x86_64-conda-linux-gnu-cc -I. -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/dp456/miniconda3/envs/py37/include -DNOCURL -fpic -c -o bwRead.pico bwRead.c /home/dp456/miniconda3/envs/py37/bin/x86_64-conda-linux-gnu-cc -I. -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/dp456/miniconda3/envs/py37/include -DNOCURL -fpic -c -o bwStats.pico bwStats.c /home/dp456/miniconda3/envs/py37/bin/x86_64-conda-linux-gnu-cc -I. -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/dp456/miniconda3/envs/py37/include -DNOCURL -fpic -c -o bwWrite.pico bwWrite.c /home/dp456/miniconda3/envs/py37/bin/x86_64-conda-linux-gnu-cc -shared -o libBigWig.so io.pico bwValues.pico bwRead.pico bwStats.pico bwWrite.pico -lm -lz /home/dp456/miniconda3/envs/py37/bin/../lib/gcc/x86_64-conda-linux-gnu/7.5.0/../../../../x86_64-conda-linux-gnu/bin/ld: cannot find -lz collect2: error: ld returned 1 exit status make: *** [Makefile:60: libBigWig.so] Error 1
已尝试的解决方法
我尝试过以下apt安装命令,但问题未解决:
sudo apt-get install zlib1g-dev sudo apt-get install libz-dev sudo apt-get install lib32z1-dev sudo apt-get install zlib*
同时尝试用conda安装WiggleTools,但因包冲突失败。
系统信息
服务器系统版本:
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-197-generic x86_64)
解决方案
原因分析
当前使用的是conda环境下的编译器,它优先查找conda环境内的库,而通过apt安装的zlib在系统路径中,conda环境无法识别到。
解决步骤
- 在conda环境中安装zlib
激活py37环境,执行:conda activate py37 conda install zlib - 重新编译安装libBigWig
先清理之前的编译文件,再重新编译:cd libBigWig make clean make install
备选方案(如果conda安装zlib仍无效)
手动指定zlib的路径给make:
- 找到conda环境中zlib的安装路径,执行:
输出类似conda activate py37 echo $CONDA_PREFIX/home/dp456/miniconda3/envs/py37 - 编译时指定zlib的库路径和头文件路径:
cd libBigWig make clean make ZLIB_LIB=$CONDA_PREFIX/lib ZLIB_INC=$CONDA_PREFIX/include install
内容的提问来源于stack exchange,提问作者Pramio-D
相关产品推荐
相关产品推荐

