Laufendes Projekt mit einer .so-Datei, die von einer neueren Version von GLIBC abhängt, als ich auf meinem System installiert habe
Ich versuche, die in diesem Repository gespeicherte Software auszuführen: https://github.com/uwnlp/EasySRL .
Ich bin ein Benutzer auf einer Cluster-Maschine und habe daher keinen Root-Zugriff.
Ich kompiliere das obige Projekt mit ant und versuche dann auf meinem System zu laufen und erhalte die folgende Meldung:
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)
Ich denke, das liegt daran, dass /tmp/deeptaggerlibdeeptagger.so gegen eine neuere Version von GLIBC kompiliert wurde, als wir in unserem Cluster installiert haben.
-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
Ich habe folgendes versucht:
Installieren Sie lokal eine neue Version von GLIBC, indem Sie folgende Schritte ausführen:
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
und dann LD_LIBRARY_PATH = / home / opt / glibc-2.14 / lib exportieren. Wenn ich das Programm jetzt starte, passiert nichts.
Ich habe auch versucht Patchelf zu verwenden
./patchelf --set-interpreter /path/to/newglibc/ld-linux.so.2 --set-rpath /path/to/newglibc/ /tmp/deeptaggerlibdeeptagger.so
Welche gibt den folgenden Fehler: Abschnitt .interp kann nicht gefunden werden
Ich dachte, dass das Wiederherstellen der .so-Datei auf dem Cluster mit der nativen Version von glibc die beste Option wäre, aber ich glaube nicht, dass ich auf die Quelldateien zugreifen kann.
Ich weiß, dass es einige ähnliche Fragen wie SE SE usw. gibt. Ich habe so viele der vorgeschlagenen Lösungen wie möglich ausprobiert (viele von ihnen scheinen mittlerweile viele Jahre alt zu sein).
Jeder Rat wäre sehr dankbar.
0 Antworten auf die Frage
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
3
Was sind die Unterschiede zwischen Linux Window Managern?
-
2
ThunderBird / Lichtsynchronisation mit SE k770i
-
4
Linux-Dateisystem
-
6
Vollbild-Flash langsam in KDE 4