2015-08-20 4 views
18

Il mio programma si stava sviluppando perfettamente con go 1.4.2. Dopo aver installato go 1.5, ricevo il seguente errore.Vai 1.5+: Errore - importa il runtime: i file di origine C non sono consentiti quando non si utilizza cgo o SWIG

importazioni runtime: sorgente C non file consentita quando non si utilizza CGO o SWIG: atomic_amd64x.c defs.c float.c heapdump.c lfstack.c malloc.c mcache.c mcentral.c mem_linux.c mfixalloc.cmgc0.c mheap.c msize.c os_linux.c panic.c parfor.c proc.c runtime.c signal.c signal_amd64x.c signal_unix.c stack.c string.c sys_x86.c vdso_linux_amd64.c

L'errore non dipende dal programma. Anche un programma "Hello world" lancia lo stesso errore.

risposta

52

Rimuovere Old 1.4.x go installazione e quindi installare go 1.5.

Ho affrontato lo stesso problema dopo aver installato go 1.5. Il problema è che ho installato Go 1.5 allo stesso punto di 1.4.2. Go 1.5 non usa più C e se sono presenti vecchi file di installazione C, genera l'errore come mostrato.

se si desidera che sia presente anche la vecchia installazione, quindi installare 1.5 in un'altra posizione e impostare GOROOT in quella posizione.

Spero che aiuti.

Edit 1: per utenti Linux:

Se avete scaricato go1.5 * .tar.gz allora avete fatto queste cose:

tar -C/usr/local/-xvf GO1 .5.linux-amd64.tar.gz

i vecchi file cartella C non vengono eliminati, in modo che il processo di corretta è:

primo: si dovrebbe de lete vecchia cartella.

sudo rm-rf/usr/local/go/

Secondo: Allora gestita

tar -C/usr/local/-xvf go1.5.x.linux -amd64.tar.gz

+1

Grazie mille. Questo ha risolto anche i miei problemi. Ho avuto due importazioni di "importazioni runtime" e ho provato tutto - ho persino rimosso il codice che ho aggiunto perché non mi aspettavo che un aggiornamento da go1.4 a go1.5 avrebbe potuto causare questo. – JohnGalt

+0

Evento non funzionante, sto usando 'go1.6.2 linux/amd64' – deFreitas

+0

Potresti spiegare un po 'di più @defreitas –

5

Se si utilizza brew per aggiornare il go a Go 1.5. Ecco il mio passo per farlo funzionare: cartella pkg

  1. Rimuovere in% GOPATH%
  2. terminale Reload (consolle) sessione, assicurarsi Go env va a Go cartella 1.5.

BTW: è necessario fare la stessa cosa se si desidera passare da Go 1.5 indietro Vai 1.4.2 tramite brew switch go 1.4.2.

+1

Anche se la pulizia di '$ GOPATH/pkg' può essere utile (non è strettamente richiesta come' go build' e 'go install' dovrebbe solo riconoscere il contenuto come stantio e ricostruire le cose come richiesto) non è correlato a il problema dell'OP che stava avendo vecchi file di origine '* .c' da Go1.4 lasciato in' $ GOROOT/src'. Non dovresti mai installare una nuova verion di Go over-top in un'installazione precedente, ma in una nuova posizione (ad esempio, sposta/elimina prima la vecchia installazione). –

+0

Non riesco a utilizzare go1.4.2, (perché ho bisogno di importare la codifica/json), cosa posso risolvere questo problema in go1.5? – user200778

+0

Mi è appena successo con brew, infatti installa su diverse cartelle, ma per qualche motivo lo strumento go usa la vecchia installazione fino a quando non avvio una nuova sessione di terminale. Ricaricare il terminale risolve il problema. – dmikalova

1

Ho riscontrato questo problema nel mio editor (sublime testo 2). Io chiamo go build su saving, sembrerebbe che il mio editor puntava per andare a 1.4.x piuttosto che al 1.5 appena installato.

  • Ho risolto questo semplicemente chiudendo e riaprendo il mio editor.
2

Ho lo stesso problema perché ho installato due versioni di golang sulla mia macchina, una da sito ufficiale e l'altra da homebrew.

E il GOROOT non corrisponde al go binario, ho appena sostituito il GOROOT con quello giusto, quindi ho finito.

export GOROOT=/usr/local/opt/go/libexeC# install via brew 
Problemi correlati