Inne

Mac Jak uniknąć „Niezdefiniowanych symboli dla architektury x86_64”?

Mikezang

do
Oryginalny plakat
22 maja 2010
Tokio, Japonia
  • 25 lipca 2015 r.
Próbowałem stworzyć kompilację krzyżową dla mojego starego Lego RCX, używam GCC 3.3.6 i NEWLIB 1.13.
Kod: |__+_|
Kiedy to zrobię, w końcu pojawił się błąd jak poniżej, co mogę zrobić?
Kod: |__+_|

Szalony rozsądek

do
8 listopada 2010


Utah
  • 2 sierpnia 2015
Dzieje się tak, że linker OS X nie może znaleźć określonej funkcji w niczym, co próbuje połączyć. Przyczyną tego może być brak makra preprocesora lub skompilowany kod i/lub biblioteka nie są połączone.

Mikezang

do
Oryginalny plakat
22 maja 2010
Tokio, Japonia
  • 4 sierpnia 2015 r.
Madd the Sane powiedział: Dzieje się tak, że linker OS X nie może znaleźć określonej funkcji w niczym, co próbuje połączyć. Przyczyną tego może być brak makra preprocesora lub skompilowany kod i/lub biblioteka nie są połączone.
Dzięki za wiadomość! czy możesz mi powiedzieć, jak rozwiązać ten problem? C

cqexbesd

4 czerwca 2009
Niemcy
  • 4 sierpnia 2015 r.
Mikezang powiedział: Dzięki za wiadomość! czy możesz mi powiedzieć, jak rozwiązać ten problem?

Tylko zgaduję, ale myślę, że może być konieczne zainstalowanie gperf. Następnie zacznij budować od zera - np. make distclean lub podobny - lub po prostu usuń katalog i ponownie rozwiń plik tar.

Cromulent

2 paź 2006
Kraina nadziei i chwały
  • 4 sierpnia 2015 r.
Mikezang powiedział: Dzięki za wiadomość! czy możesz mi powiedzieć, jak rozwiązać ten problem?

Wygląda na to, że używasz niewłaściwego GCC.

Wpisz pełną ścieżkę do GCC 3.3.6 lub dodaj ją do ścieżki o innej nazwie niż GCC (ponieważ Apple już udostępnia polecenie GCC, które faktycznie uruchamia clang). Dlatego masz następujący błąd:

ld: nie znaleziono symboli dla architektury x86_64

clang: błąd: polecenie konsolidatora nie powiodło się z kodem zakończenia 1 (użyj -v, aby zobaczyć wywołanie)

W rzeczywistości używasz Clang, który kompiluje się do x86_64. Musisz uruchomić GCC, które skompilowałeś. Normalnie podczas kompilacji GCC jako kompilatora krzyżowego nadajesz mu inną nazwę niż GCC (która jest jedną z opcji skryptu konfiguracyjnego dla GCC podczas kompilacji), aby można było odróżnić GCC dostarczany przez system od Twojego własnego krzyża GCC kompilator.

Mikezang

do
Oryginalny plakat
22 maja 2010
Tokio, Japonia
  • 4 sierpnia 2015 r.
cqexbesd powiedział: tylko zgaduję, ale myślę, że może być konieczne zainstalowanie gperf. Następnie zacznij budować od zera - np. make distclean lub podobny - lub po prostu usuń katalog i ponownie rozwiń plik tar.
Świetny! Zeszłej nocy znalazłem tę stronę http://stackoverflow.com/questions/3040801/error-compiling-gcc-undefined-reference-to-libc-name-p , błąd znika po wykonaniu go.