Binäres Programm kann nicht unter Ubuntu ausgeführt werden

11623
AJ.

Ich kann nicht glauben, dass ich das frage ... Klar bin ich heute in seltener Form.

Beim Versuch, eine neue Ubuntu-Maschine einzurichten, wurde 'p4' (Perforce-Befehlszeilenclient) heruntergeladen. Es handelt sich um eine einzelne Datei - eine statisch verknüpfte binäre ausführbare Datei.

wget http://www.perforce.com/downloads/perforce/r09.2/bin.linux26x86/p4

... direkt in / usr / bin. Einfach genug. Außer:

root@aj-ubuntu:/usr/bin# ll p4  -rwxr-xr-x 1 root root 748808 2010-02-11 16:54 p4 root@aj-ubuntu:/usr/bin# ./p4  -su: ./p4: No such file or directory root@aj-ubuntu:/usr/bin# /usr/bin/p4  -su: /usr/bin/p4: No such file or directory 

Was um alles in der Welt passiert hier ...?!

Vielen Dank im Voraus für Ihren Spott :)

-aj

4
Ändern Sie den Titel Dude ..: - \ Bibhas vor 14 Jahren 0
@ Bibhas - fair genug. AJ. vor 14 Jahren 0
Update: Stellen Sie sicher, dass Sie ein 32-Bit-Ubuntu verwenden. Wenn Sie ein 64-Bit-System ausführen, benötigen Sie wahrscheinlich das Paket 'ia32-libs'. tks für den tipp du rettest mich vor 8 stunden schmerz in der hölle :) vor 12 Jahren 0

7 Antworten auf die Frage

4
nik

Ok, ich habe die Datei von Ihrer URL (unter 800KB) erhalten und dies ausprobiert (von einem Cygwin-Terminal, was praktisch war).

$ file p4
p4: ELF-32-Bit-LSB-Programm, Intel 80386, Version 1 (SYSV), für GNU / Linux 2.2.5, dynamisch verknüpft (verwendet freigegebene Bibliotheken), gestrippt

Aber Sie erwarten, dass es statisch verknüpft ist. Warum?


Update: Stellen Sie sicher, dass Sie ein 32-Bit-Ubuntu verwenden.
Wenn Sie ein 64-Bit-System verwenden, benötigen Sie wahrscheinlich das ia32-libsPaket ' '.

@nik - siehe meine Anmerkung zu @gbjbaanb unten. Ich habe 'ldd' ausprobiert und alles was gesagt wurde war: "keine dynamische ausführbare Datei". Also nahm ich an, dass es statisch verknüpft war. AJ. vor 14 Jahren 0
bestätigen Sie, das ist, was `file` auch auf meinem System gibt. Ich habe momentan kein laufendes Linux-System, also kann ich 'ldd' nicht überprüfen. quack quixote vor 14 Jahren 1
@nik - Ihr Update hat es auf den Punkt gebracht. Ich arbeite mit 64-Bit-Ubuntu, aber das Binärprogramm wurde für die 32-Bit-Architektur entwickelt. Ich installierte ia32-libs und das wurde behoben, danke. AJ. vor 14 Jahren 2
1
gbjbaanb

Versuchen Sie file ./p4und sehen Sie, was es sagt. Möglicherweise haben Sie nicht die richtigen Bibliotheken installiert, um es auszuführen (daher kann die Binärdatei überhaupt nicht geladen werden - Sie haben die gleichen Probleme mit Windows, wenn Sie nicht über die richtigen DLLs verfügen).

@ gbjbaanb - Ich habe 'ldd' ausprobiert und alles was gesagt wurde war: "keine dynamische ausführbare Datei." Ich wusste nicht über 'Datei', aber ich werde es versuchen. AJ. vor 14 Jahren 0
1
Dennis Williamson

Überprüfen Sie ls -lb p4*, ob der Dateiname verstreute Zeichen enthält.

1
visudo

Dies ist der Fall, wenn Ihre ausführbare Datei nicht gültig ist. Dies kann für eine andere Architektur oder einen anderen Kernel sein. Oder nur ein beschädigter ELF-Header.

1
al.

Der Interpreter readelf -a /usr/bin/p4 | grep interpreterweist darauf hin, dass wahrscheinlich fehlt. Es wird wahrscheinlich in einigen kompatiblen Paketen geliefert, wie von anderen Kommentatoren ausgeführt.

Ausgabe: `[Programminterpreter anfordern: /lib/ld-linux.so.2]` ... quack quixote vor 14 Jahren 0
1
Quandary

chmod + x / usr / bin / p4

0
ZaB

Die statische ausführbare Datei ist nicht abhängig von Bibliotheken. Sie benötigt einen kompatiblen Kernel, nämlich einen Kernel, der die gleichen Systemaufrufe hat, auf denen er erstellt wurde.

p4 ist ein leistungsfähiger Client, und Ihr Client ist gegen den Kernel v2.2.5 vor 10 Jahren gebaut worden ...

es wird mit (langen, nicht unterstützten) späteren 2.2-Kerneln funktionieren,

es kann mit (Monat seit nicht unterstützten) 2.4 Kerneln funktionieren,

Es funktioniert nicht mit (noch unterstützten) 2.6- und 3.x-Kerneln

Sie machen die Version für 2.6-Clients http://www.perforce.com/downloads/complete_list für Ihre Bedürfnisse verfügbar.