2012-07-11 17 views
5

Ich habe erfolgreich ein Programm (einschließlich SDL) auf meinem Computer (Ubuntu 12) kompiliert und die a.out läuft gut!läuft a.out auf einem anderen Computer

Jetzt, wenn ich die a.out an einen Freund senden, funktioniert es einfach nicht. (gibt einfache Fehlermeldung ("Can't be run..") oder sowas) Aber wenn ich die entsprechende Quelldatei auf meinem Freundescomputer nochmal kompiliere, klappt es!

Wie muss ich mein Programm komprimieren/kompilieren, damit es auf einem anderen Computer lauffähig ist?

+2

Er hat wahrscheinlich keine kompatiblen Versionen der Bibliotheken - SDL, glibc, vielleicht sogar libstdC++. Welche Versionen haben Sie und welche Versionen hat er? Möglicherweise können Sie Ihre Binärdatei statisch verknüpfen, andernfalls müssen Sie die minimale Bibliotheksversion kompilieren, die Sie unterstützen möchten. – Rup

+0

Macht vielleicht einen chmod auf der exe, aber die Antwort unten gilt und ist der Weg nach vorne, den ich vorschlagen würde – mathematician1975

+9

Das ist eine gute Frage. In vierzig Jahren hat niemand eine einfache Antwort gefunden. –

Antwort

5

Ausführbare Dateien sind oft spezifisch für die Umgebung/Maschine, auf der sie erstellt wurden. Selbst wenn derselbe Prozessor/Hardware beteiligt ist, können Abhängigkeiten von Bibliotheken vorhanden sein, die verhindern, dass ausführbare Dateien einfach auf anderen Maschinen ausgeführt werden.

Können Sie einfach den Quellcode mit Anweisungen zum Kompilieren senden? kein NDA oder andere Probleme Angenommen, es wird diesen Ansatz zu verhindern (Ich schlage vor, nur dass da Sie erwähnt dies für Sie gearbeitet)

Natürlich, am Ende es möglich ist, nach allem, was ist, wie Binärdateien verteilt sind, aber sie wird sorgfältig erstellt und wird statisch verknüpfte Bibliotheken haben (dh alles ist Teil der ausführbaren Datei).

+0

Ich habe jetzt nicht die Quelle hier, aber dieses Snippet sollte hier die gleiche Wirkung haben: http://lazyfoo.net/SDL_tutorials/lesson01/linux/cli/index.php – user1511417

+0

Ich denke, SDL ist das Problem .. dunno – user1511417

+0

@ user1511417 wahrscheinlich, ich kenne es leider nicht. Aber das ist kein ungewöhnliches Problem/Dilemma (das Verteilen von Software), das Sie erlebt haben. – Levon

0

Fragen Sie Ihren Freund Folgendes zu tun:

chmod +x a.out 
ldd a.out 

Was sieht er? Ich nehme natürlich an, dass die zwei Umgebungen weitgehend ähnlich sind (z. B. beide laufen Ubuntu, etc.)

+0

Ich denke ernsthaft, das ist was er braucht. Außerdem sollte man, wenn die Quelle verfügbar ist, Binärdateien verteilen, was man vermeiden sollte, wenn man kann. (Ich denke, hier ist keine NDA beteiligt). – Aftnix

Verwandte Themen