/ usr / bin / ld: невозможно найти ошибку -l <library>при компиляции (без sudo) - PullRequest
0 голосов
/ 30 октября 2018

Я поделюсь с вами своей проблемой:

В основном мне нужно скомпилировать инструмент (Freebayes: https://github.com/ekg/freebayes) в кластере, в котором запущена rhel fedora 6.5, где у меня нет разрешений 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 находится в папке у меня дома (es: / home / usr / packages / lib), которую я уже добавил в LD_LIBRARY_PATH в файле .bashrc. (экспорт 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

Как бы я изменил его, чтобы он велел искать -liblzma в / home / usr / packages / lib /?

Большое спасибо всем, кто хочет ответить.

...