Compiler-Tools, execv und "exec-Formatfehler" unter s390x-chroot

2871
jww

Ich habe eine Debian 8 x86_64-Maschine mit zwei Chroot-Umgebungen. Der erste ist armelund der zweite ist s390x. armelwurde letzte Woche s390xinstalliert und wurde kürzlich installiert. armelist sowohl vor als auch nach der s390xInstallation in Ordnung . Aber ich fange Fehler beim Kompilieren unter dem neu installierten s390x.

# chroot debian-s390x # g++ -dumpmachine s390x-linux-gnu  # cd /home/cryptopp-5.6.3/  # make g++ -DNDEBUG -g2 -O2 -pipe -c osrng.cpp g++: error trying to exec '/usr/lib/gcc/s390x-linux-gnu/5/cc1plus': execv: Exec format error GNUmakefile:382: recipe for target 'osrng.o' failed make: *** [osrng.o] Error 1 

Ich kann bei der Suche keine Informationen finden /usr/lib/gcc/s390x-linux-gnu/5/cc1plus': execv: Exec format error.

Ich habe etwas zu lesen gefunden cc1plus, aber ich sehe nicht, wo die Installation Probleme hat:

# file /usr/lib/gcc/s390x-linux-gnu/5/cc1plus /usr/lib/gcc/s390x-linux-gnu/5/cc1plus: ELF 64-bit MSB executable, IBM S/390, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld64.so.1, for GNU/Linux 2.6.32, BuildID[sha1]=aaa1e442e47e5e41c36b70d5e6a8f538da4ca3e7, not stripped 

Ich habe auch eine Neuinstallation von g++mit durchgeführt apt-get install --reinstall g++, aber es hat nicht geholfen.

Was ist das Problem und was ist die Lösung?


BEARBEITEN : Dies kann das Problem oder ein verwandtes Problem sein: Debian-Fehler 684909: qemu-system-s390x ist defekt, kein Bootloader 's390-zipl.rom' .


Ich glaube nicht, dass es an dem Projekt liegt, das ich kompilieren möchte:

# cat test.cxx  #include <iostream>  int main(int argc, char* argv[]) { return argc; }  # g++ test.cxx  g++: error trying to exec '/usr/lib/gcc/s390x-linux-gnu/5/cc1plus': execv: Exec format error 

Hier ist der 5-Sekunden-Rundgang durch die Installation der debian-s390x- Umgebung:

# apt-get install qemu-user-static debootstrap # qemu-debootstrap --arch=s390x --keyring /usr/share/keyrings/debian-archive-keyring.gpg --variant=buildd --exclude=debfoster unstable debian-s390x http://ftp.debian.org/debian # chroot debian-s390x # apt-get install locales build-essentials emacs-nox 
0

1 Antwort auf die Frage

0
jww

Dies stellte sich als Problem bei binfmt-Registrierungen heraus. Aus der Nachricht von Michael Tokarev in Debian Ausgabe 799120: cc1 / cc1plus schlägt mit "execv: exec format error" unter QEMU s390x fehl, C ++ - Programm kann nicht kompiliert werden :

Dieses Problem wurde in der Version behoben, gegen die Sie dieses Problem gemeldet haben: 1: 2.4 + dfsg-3, wo ich die Binfmt-Masken mit OSABI_GNU aktualisiert habe. Dies war # 784605.

Es scheint jedoch, dass wir ein Problem mit der Aktualisierung von binfmt-Registrierungen haben. Wenn Sie bereits ein qemu-user-static-Paket installiert hatten (das nur die Variante OSABI_SYSV registriert) und auf die aktuelle Version aktualisieren (die sowohl die SYSV- als auch die GNU-Variante registrieren soll), wird die Registrierung im Kernel nicht aktualisiert. Es wird beim Neustart aktualisiert, oder Sie können das qemu-user-static-Paket entfernen und erneut installieren. Danach funktioniert es.