web-dev-qa-db-fra.com

Go 1.5+: Error - Runtime: les fichiers source C ne sont pas autorisés lorsque cgo ou SWIG n’est pas utilisé

Mon programme se construisait parfaitement avec go 1.4.2. Après l'installation de go 1.5, le message d'erreur suivant s'affiche.

importations runtime: les fichiers source C ne sont pas autorisés lorsque vous n'utilisez ni cgo ni SWIG: atomic_AMD64x.c defs.c float.c heapdump.c lfstack.c malloc.c mcache.c mcentral.c mem_linux.c mfixalloc.c mgc0.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'erreur ne dépend pas du programme. Même un programme "Hello world" génère la même erreur.

18
user3094829

Supprimez Old 1.4.x go installation, puis installez go 1.5.

J'ai rencontré le même problème après l'installation de go 1.5. Le problème est que j'ai installé go 1.5 au même endroit que 1.4.2. Go 1.5 n'utilise plus le C et si d'anciens fichiers d'installation du C sont présents, l'erreur est renvoyée à l'écran.

si vous souhaitez que l'ancienne installation soit également présente, installez 1.5 à un autre emplacement et définissez GOROOT sur cet emplacement.

J'espère que ça aide.

Edit 1: Pour les utilisateurs de Linux:

si vous avez téléchargé go1.5 * .tar.gz alors vous avez fait ceci: 

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

Vos anciens fichiers du dossier C ne sont pas supprimés. Le processus correct est le suivant: 

Premièrement: vous devriez supprimer votre ancien dossier go.

Sudo rm -rf/usr/local/go /

Deuxièmement: ensuite courir 

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

52
Mayank Patel

Si vous utilisez brew pour mettre à niveau votre version de Go to Go 1.5. Voici ma démarche pour le faire fonctionner:

  1. Supprimer le dossier pkg dans% GOPATH%
  2. Rechargez une session de terminal (console), assurez-vous que Go env est placé dans le dossier Go 1.5.

BTW: Vous devez faire la même chose si vous voulez basculer de Go 1.5 back Go 1.4.2 via brew switch go 1.4.2.

5
Evan Lin

J'ai le même problème parce que j'ai installé deux versions de golang sur ma machine, l'une à partir d'un site officiel et l'autre à partir de homebrew.

Et le GOROOT ne correspond pas au binaire go, je viens de remplacer le GOROOT par le bon, puis c'est fait.

export GOROOT=/usr/local/opt/go/libexec # install via brew
2
RoCry

J'ai rencontré ce problème dans mon éditeur (sublime text 2). J'appelle construire après sauvegarde, il semblerait que mon éditeur se dirigeait vers 1.4.x plutôt que vers la 1.5 nouvellement installée. 

  • J'ai résolu ce problème simplement en quittant et en rouvrant mon éditeur. 
1
user2737876