Co oznacza ten błąd GCC „… relokacja obcięta w celu dopasowania…”?
Programuję stronę hosta systemu akceleratora hosta. Host działa na komputerze w systemie Ubuntu Linux i komunikuje się z wbudowanym sprzętem za pośrednictwem połączenia USB. Komunikacja odbywa się poprzez kopiowanie fragmentów pamięci do iz wbudowanej pamięci sprzętu.
W pamięci płyty znajduje się obszar pamięci, którego używam jako skrzynki pocztowej, w której piszę i czytam dane. Skrzynka pocztowa jest zdefiniowana jako struktura i używam tej samej definicji do przydzielania lustrzanej skrzynki pocztowej w mojej przestrzeni hosta.
Użyłem tej techniki z powodzeniem w przeszłości, więc teraz skopiowałem projekt hosta Eclipse do obszaru roboczego mojego bieżącego projektu i dokonałem odpowiednich zmian nazwy. Dziwne jest to, że podczas budowania projektu hosta otrzymuję teraz następującą wiadomość:
Budowanie celu: fft2d_host
Wywoływanie: GCC C Linker
gcc -L / opt / adapteva / esdk / tools / host / x86_64 / lib -o "fft2d_host" ./src/fft2d_host.o -le_host -lrt
./src/fft2d_host.o: W funkcji `main ':
fft2d_host.c :(. text + 0x280): relokacja obcięta do dopasowania: R_X86_64_PC32 przeciwko symbolowi „Mailbox” zdefiniowanemu w sekcji COMMON w ./src/fft2d_host.o
Co oznacza ten błąd i dlaczego nie będzie on opierał się na bieżącym projekcie, podczas gdy starszy projekt jest w porządku?