2013-05-14 5 views
16

Ich habe ein Go-Programm in einem 64-Bit-System codiert, aber ich möchte eine 32-Bit-Binärdatei kompilieren! Wie kann ich es tun? Die 64-Bit-Binärdatei funktioniert einfach großartig, aber ich habe keine Ahnung, wie man eine 32-Bit-Binärdatei erstellt. Ich wäre sehr dankbar, wenn mir jemand dabei helfen könnte!Übersetzen 32-Bit-Binär auf 64-Bit-System

Vielen Dank im Voraus!

PS: Ich benutze Windows OS.

+0

Welche IDE verwenden Sie? –

+0

Ich verwende keine IDE. Nur ein Texteditor und die Befehlszeile. Wie auch immer, ist es möglich, go-Code in VS zu kompilieren? – pluralism

+1

Probieren Sie die GOARCH-Umgebungsvariable wie hier beschrieben: http://stackoverflow.com/questions/7786492/how-do-you-build-the-8g-and-6g-go-compilers-for-go –

Antwort

16

Wenn Sie Ihren Go aus der Quelle erstellt haben, können Sie zusätzliche Compiler und Bibliotheken für jede CPU und jedes Betriebssystem erstellen. Wenn Sie auf Windows/amd64 sind und für Fenster bauen wollen/386, dann wird dies alles bauen, was Sie für kompilieren Fenster/386:

set GOARCH=386 
cd %GOROOT%\src 
make.bat --no-clean 

Sobald Sie das getan haben, können Sie Ihre Fenster/386 bauen ausführbare Datei mit:

set GOARCH=386 
cd %YOUR_PROG_DIR% 
go build 

Da Sie auf Fenster/amd64 sind, sollten Sie Ihre Fenster/386 Programme zu sogar laufen/testen können. Stellen Sie sicher, set GOARCH=386 bevor Sie alle Befehle für Windows/386 aufrufen.

Ein Vorbehalt: Dies unterstützt cgo nicht, so dass Sie keine Pakete verwenden können, die cgo verwenden.

+1

Wenn Sie "go Build -a "müssen Sie stattdessen" make.bat "im GOROOT-Verzeichnis ausführen? – noj

+0

@noj Ich bin nicht klar über Ihre Frage? Aber Sie starten make.bat einmal, um alle Compiler und Standardpakete zu erstellen. Danach können Sie sie einfach benutzen. – alex

+0

'make.bat' ist alte Version 1.4 ... wie sauber zu neuer Version 1.8.3 machen? – KingRider

3

Ok, ich habe endlich das Problem gelöst! Hier ist es, wie ich es gemacht habe (ich habe wirklich kläglich versagt!).

Das erste, was ich tat, war GCC herunterladen von http://www.mingw.org/. Fügen Sie als nächstes C: \ MinGW \ bin zur PATH-Umgebungsvariablen hinzu (ich nehme an, dass MinGW in C: \ MinGw installiert ist) Nächste Sache vor der Ausführung von go build/go install ist das Festlegen der Umgebungsvariablen. Öffnen Sie die Eingabeaufforderung und gehen Sie zu C: \ Go \ src und führen Sie all.bat über die Befehlszeile aus. Dann müssen Sie GOOS, GOARCH und CGO_ENABLED auf windows, 386 bzw. 0 setzen! (Sie sollten GOPATH auch auf den Pfad setzen, in dem sich Ihr aktuelles Go-Projekt befindet). Als nächstes make.bat und make.bat ausführen --no-clean Danach können Sie Ihr Projekt für 32-Bit-Systeme erstellen! Ich hoffe, das ist hilfreich!

6

So wie ich dieses Ziel erreicht haben (ohne Compilieren des Compilers) auf meinem Windows 7 64-Bit-PC wurde zum ersten Mal der Fenster mit AMD64 installiert, dann download 32bit zip und entpacken in einen zweiten Ordner:

\go\go32 
\go\go64 

durch die dann die PATH Einstellung und die GOROOT in meinem Fenster der Eingabeaufforderung wie folgt:

set PATH=\go\go32;%PATH% 
set GOROOT=\go\go32\ 

dann ging ich zurück und neu kompiliert meine app, die zuvor mit dem 64-Bit kompilieren. All dies kann in einem Batch eingerichtet werden, wenn Sie regelmäßig wechseln möchten.

+0

Arbeitete für mich, aber ich musste den Pfad zum Go32 \ BIN-Ordner festlegen. – user3523091