2016-07-15 44 views
7

Podczas budowania programu Go z wykorzystaniem CGO otrzymuję błądCGO nierozpoznany relokacja (0x2a) w sekcji `.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 

Próbowano google ten problem i znaleźć kilka błędów (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=808205) na Debianie i Ubuntu z kompilatorem C i łącznikiem w wersjach libc6 (2.21), które są nowsze niż wersja, której używam (2.19).

Wspomniałem również o problemach z kompilacją programów C i pomyślnie skompilowałem przykład w języku C.

Próbowałem zbudować mój program Go na innym komputerze z tymi samymi wersjami systemu i bibliotek, a kompilacja powiodła się.

+0

Może ona łatwiej odpowiedzieć na twoje pytanie, jeśli opublikujesz kod. Jaki był rodzaj architektury i systemu operacyjnego, w którym kompilacja się powiodła? – ijt

+1

Miałem ten sam problem z GLFW, ale z C++/c, moim problemem było to, że wersja kompilatora, z którego korzystałem, była inna niż wersja używana do kompilowania biblioteki, z którą się łączyłem. – snb

Odpowiedz

1

Sprawdź, czy nie używasz ccache. tj. Przez: echo $ PATH jeśli coś takiego jak/usr/local/ccache ścieżka jest na pierwszym miejscu ... bądź świadomy! ccache spróbuj zoptymalizować czas kompilacji, używając pamięci podręcznej. Jeśli zbudowałeś bibliotekę z pierwszym kompilatorem, a następnie próbowałeś skompilować z innym, naraziłeś się na takie problemy z przeniesieniem.

więc spróbuj wyczyścić ccache: ccache -C lub po prostu zmodyfikować ścieżkę usuwania ścieżkę poświęconą CCache przez export PATH =/usr/bin: ...

A ++ Thilas