/ usr / bin / ld:编译时找不到-l <library>错误(没有sudo)

时间:2018-10-30 09:16:29

标签: c++ gcc compilation

我将与您分享我的问题:

基本上,我需要在运行rhel fedora 6.5的集群中编译一个工具(Freebayes:https://github.com/ekg/freebayes),而我没有sudo权限。

当我使用'make'进行编译时,会出现此错误:

/usr/bin/ld: cannot find -llzma
collect2: ld returned 1 exit status
make[4]: *** [libhts.so] Error 1
make[4]: Leaving directory `/home/gspirito/freebayes/SeqLib/htslib'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/gspirito/freebayes/SeqLib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/gspirito/freebayes/SeqLib'
make[1]: *** [../SeqLib/src/libseqlib.a] Error 2
make[1]: Leaving directory `/home/gspirito/freebayes/src'
make: *** [all] Error 2

这应该意味着它找不到liblzma.so,实际上,如果我运行“ locate liblzma.so”,它就会给我以下信息:

/usr/lib64/liblzma.so.0
/usr/lib64/liblzma.so.0.0.0

liblzma.so位于我家中的文件夹中(例如:/ home / usr / packages / lib),我已经将其添加到.bashrc文件中的LD_LIBRARY_PATH中。 (导出LD_LIBRARY_PATH = / home / gspirito / packages / lib:/ usr / lib64 /:$ LD_LIBRARY_PATH)。 还有C_INCLUDE_PATH和CPLUS_INCLUDE_PATH。

我搜索了一个解决方案,在许多论坛中,建议像这样链接两个文件:

ln -s /usr/lib64/liblzma.so.0 /home/usr/packages/lib/liblzma.so.0

但是我没有这样做的权限。

我曾考虑过更改Makefile,以使其在我的/ home中查找库,但是我对此没有经验。这是我的Makefile:

all: vcflib/Makefile log
    cd src && $(MAKE)

wbamtools: vcflib/Makefile log
    cd src && $(MAKE) -f Makefile.bamtools

log: src/version_git.h
    wget -q http://hypervolu.me/freebayes/build/$(shell cat src/version_git.h | grep v | cut -f 3 -d\  | sed s/\"//g) &

src/version_git.h:
    cd src && $(MAKE) autoversion
    touch src/version_git.h

vcflib/Makefile:
    @echo "To build freebayes you must use git to also download its submodules."
    @echo "Do so by downloading freebayes again using this command (note --recursive flag):"
    @echo "    git clone --recursive git://github.com/ekg/freebayes.git"
    @error

debug:
    cd src && $(MAKE) debug

install:
    cp bin/freebayes bin/bamleftalign /usr/local/bin/

uninstall:
    rm /usr/local/bin/freebayes /usr/local/bin/bamleftalign

test:
    cd test && make test

clean:
    cd src && $(MAKE) clean
    rm -fr bin/*

.PHONY: all install uninstall clean test

我如何更改它以使其在/ home / usr / packages / lib /中寻找-liblzma?

非常感谢愿意回答的任何人。

0 个答案:

没有答案