2016-07-15 13 views
7

Während bei Verwendung von Go-Programm bauen CGO ich FehlerCGO Fehler unerkannt Verlagerung (0x2a) in Abschnitt `.text‘

/usr/lib/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1 
/usr/bin/ld: /tmp/go-link-373355991/000002.o: unrecognized relocation (0x2a) in section `.text' 
/usr/bin/ld: final link failed: Bad value 
collect2: error: ld returned 1 exit status 

versucht, das Problem zu Google und fand einige Bugs (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=808205) auf Debian und Ubuntu mit C-Compiler und Linker in Versionen von libc6 (2.21), die neuer sind als Version, die ich verwende (2.19).

Auch dort erwähnt Probleme mit dem Kompilieren von C-Programmen und ich kompiliere Beispiel in C erfolgreich.

Ich habe versucht, mein Go-Programm auf anderen Rechnern mit den gleichen System- und Bibliothekenversionen zu erstellen, und der Build war erfolgreich.

+0

Es kann einfacher sein, Ihre Frage zu beantworten, wenn Sie den Code veröffentlichen. Welche Art von Architektur und Betriebssystem war es, wo der Build erfolgreich war? – ijt

+1

Ich hatte das gleiche Problem mit GLFW, aber mit C++/C war mein Problem, dass die Version des Compilers, mit dem ich kompiliert habe, anders war als die Version, die verwendet wurde, um die Bibliothek zu kompilieren, gegen die ich verlinkte. – snb

Antwort

1

Überprüfen Sie, ob Sie nicht Ccache verwenden. dh durch: echo $ PATH wenn etwas wie/usr/local/ccache Pfad zuerst kommt ... seien Sie sich bewusst! ccache versuchen, die Kompilierungszeit mit einem Cache zu optimieren. Wenn Sie eine Bibliothek mit einem ersten Compiler erstellt haben und dann versuchen, mit einer anderen zu kompilieren, sind Sie solchen Umzugsschwierigkeiten ausgesetzt.

so versuchen, die ccache zu löschen: ccache -C oder einfach bearbeiten Sie Ihre PATH gewidmet den Pfad zu entfernen, indem export PATH =/usr/bin ccache: ...

A ++ Thilas