Запуск проекта, в котором файл .so зависит от более новой версии GLIBC, чем я установил в моей системе
Я пытаюсь запустить программное обеспечение, хранящееся в этом хранилище: https://github.com/uwnlp/EasySRL .
Я являюсь пользователем на кластерной машине и поэтому не имею root-доступа.
Я компилирую вышеупомянутый проект с помощью ant, а затем пытаюсь запустить его в моей системе и получаю следующее сообщение:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/deeptaggerlibdeeptagger.so: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /tmp/deeptaggerlibdeeptagger.so) at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1937) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1822) at java.lang.Runtime.load0(Runtime.java:809) at java.lang.System.load(System.java:1086) at edu.uw.deeptagger.DeepTagger.loadLib(DeepTagger.java:57) at edu.uw.deeptagger.DeepTagger.loadFromJar(DeepTagger.java:35) at edu.uw.deeptagger.DeepTagger.<clinit>(DeepTagger.java:25) at edu.uw.easysrl.syntax.tagger.TaggerLSTM.makeDeepTagger(Unknown Source) at edu.uw.easysrl.syntax.tagger.TaggerLSTM.<init>(Unknown Source) at edu.uw.easysrl.syntax.tagger.Tagger.make(Unknown Source) at edu.uw.easysrl.syntax.parser.ParserBuilder.build(Unknown Source) at edu.uw.easysrl.main.EasySRL.makePipelineParser(Unknown Source) at edu.uw.easysrl.main.EasySRL.main(Unknown Source)
Я думаю, что это потому, что /tmp/deeptaggerlibdeeptagger.so был скомпилирован с более новой версией GLIBC, чем мы установили в нашем кластере.
-bash-4.1$ strings /lib/libc.so.6 | grep GLIBC_2.1 GLIBC_2.1 GLIBC_2.1.1 GLIBC_2.1.2 GLIBC_2.1.3 GLIBC_2.10 GLIBC_2.11 GLIBC_2.12
Я пробовал следующее:
Установите новую версию GLIBC локально, выполнив следующие действия:
mkdir ~/glibc_install; cd ~/glibc_install wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz tar zxvf glibc-2.14.tar.gz cd glibc-2.14 mkdir build cd build ../configure --prefix=/home/opt/glibc-2.14 make -j4 make install
а затем экспортируйте LD_LIBRARY_PATH = / home / opt / glibc-2.14 / lib. Когда я запускаю программу сейчас, ничего не происходит.
Я также пытался использовать patchelf
./patchelf --set-interpreter /path/to/newglibc/ld-linux.so.2 --set-rpath /path/to/newglibc/ /tmp/deeptaggerlibdeeptagger.so
Который дает следующую ошибку: не может найти раздел .interp
Я подумал, что, возможно, лучшим вариантом будет перестройка файла .so в кластере с собственной версией glibc, но я не думаю, что у меня есть доступ к исходным файлам.
Я знаю, что есть довольно много вопросов подобного характера в SE SU и т. Д. Я испробовал как можно больше предложенных решений (многим из них, похоже, уже много лет).
Любые советы будут высоко ценится.
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4