2016-07-15 166 views
7

Mentre costruire il programma Go con l'uso di Cgo ottengo l'erroreCGO delocalizzazione non riconosciuta (0x2a) nella sezione `.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 

provato a google tale questione e hanno trovato alcuni bug (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=808205) su Debian e Ubuntu con il compilatore C e il linker nelle versioni di libc6 (2.21) che sono più recenti della versione che uso (2.19).

Inoltre, ci sono stati problemi con la compilazione di programmi in C e ho compilato con successo l'esempio in C.

Ho provato a creare il mio programma Go su un'altra macchina con le stesse versioni di sistema e librerie e la creazione è riuscita.

+0

Può essere più facile rispondere alla tua domanda se si pubblica il codice. Inoltre, che tipo di architettura e OS era dove la costruzione è riuscita? – ijt

+1

Ho avuto lo stesso problema con GLFW ma con C++/c, il mio problema era che la versione del compilatore con cui ho compilato era diversa dalla versione utilizzata per compilare la libreria con cui stavo collegando. – snb

risposta

1

controllare se non si utilizza ccache. ad esempio da: echo $ PATH se qualcosa come/usr/local/ccache percorso viene prima ... attenzione! ccache tenta di ottimizzare i tempi di compilazione, utilizzando una cache. Se hai costruito una libreria con un primo compilatore e poi stai cercando di compilarlo con un altro, sei esposto a tali problemi di ricollocazione.

modo da cercare di cancellare il ccache: ccache -C o semplicemente modificare il PATH di rimuovere il percorso dedicato a ccache da export PATH =/usr/bin: ...

A ++ Thila