Я поделюсь с вами своей проблемой:
В основном мне нужно скомпилировать инструмент (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 /?
Большое спасибо всем, кто хочет ответить.