2016-08-25 4 views
0

tstx Programmcode (golang)Segmentation fault debian 8 golang

package main 

import "fmt" 

func main(){ 
fmt.Printf("Hello") 
} 

Auf dev Computer (Debian-basierten Linux) alles in Ordnung, aber , wenn ich es auf dem Server-Computer ausführen (Debian 8) i Segmentierungsfehler bekam

Code

beide Systeme sind amd64, compilled mit [go build]

[strace ./tstx] - sagt

execve("./tstx", ["./tstx"], [/* 16 vars */]) = 0                                         
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0xffffffffffffff8b} ---                                 
+++ killed by SIGSEGV +++  
+0

Ist das mit go1.7? Was ist dein "Debian-basierter Linux"? – JimB

+0

ja, go1.7, mein linux - kali –

+0

Kompilieren Sie das Programm auf der Debian-Maschine, oder kopieren Sie die Binärdatei von der Kali-Maschine? Ich würde mit der Go-Mailing-Liste beginnen oder ein Problem öffnen. Dies ist nicht wirklich der richtige Ort für das Debuggen von Sprachlaufzeit- oder Betriebssystemfehlern. – JimB

Antwort

0

Da Sie auf einem Computer kompilieren und in einen anderen wechseln, möchten Sie sicher sein, dass DLLs kein Problem darstellen. Zuerst bauen mit:

CGO_ENABLED=0 go build... 

Und sicherzustellen, dass es mit gut aussieht:

ldd tstx 

(Es soll mit „nicht einem dynamischen ausführbaren“ zurückkommen oder ähnlichem).

Deaktivieren von CGO bedeutet, dass die ausführbare Datei größer ist (alles statisch verknüpft), aber dlls sind kein Problem, da es in sich abgeschlossen ist. Schließlich kann es nicht schaden zu überprüfen, dass ihre Architekturen über uname identisch sind ...