Övrig

Mac Hur undviker man 'Odefinierade symboler för arkitektur x86_64'?

mikezang

till
Originalaffisch
22 maj 2010
Tokyo, Japan
  • 25 juli 2015
Jag försökte skapa en korskompilering för min gamla Lego RCX, jag använder GCC 3.3.6 och NEWLIB 1.13.
Kod: |_+_|
När jag gör det fick jag äntligen ett felmeddelande enligt nedan, vad kan jag göra?
Kod: |_+_|

Madd the Sane

till
8 november 2010


Utah
  • 2 augusti 2015
Vad som händer är att OS X:s länkare inte kan hitta den angivna funktionen i något den försöker länka. Anledningen till detta kan vara ett saknat förprocessormakro, eller så länkas inte den kompilerade koden och/eller biblioteket.

mikezang

till
Originalaffisch
22 maj 2010
Tokyo, Japan
  • 4 augusti 2015
Madd the Sane sa: Vad som händer är att OS X:s länk inte kan hitta den angivna funktionen i något den försöker länka. Anledningen till detta kan vara ett saknat förprocessormakro, eller så länkas inte den kompilerade koden och/eller biblioteket.
Tack för ditt meddelande! kan du berätta för mig hur jag löser detta problem? C

cqexbesd

4 juni 2009
Tyskland
  • 4 augusti 2015
mikezang sa: Tack för ditt meddelande! kan du berätta för mig hur jag löser detta problem?

Jag gissar bara här men jag tror att du kan behöva ha gperf installerat. Börja sedan bygga från grunden - d.v.s. gör distclean eller liknande - eller ta bara bort din katalog och expandera tar-filen igen.

Cromulent

2 oktober 2006
Hoppets och ärans land
  • 4 augusti 2015
mikezang sa: Tack för ditt meddelande! kan du berätta för mig hur jag löser detta problem?

Det verkar som att du använder fel GCC.

Skriv antingen hela sökvägen till GCC 3.3.6 eller lägg till den i sökvägen med ett annat namn än GCC (eftersom Apple redan tillhandahåller ett GCC-kommando som faktiskt kör clang). Det är därför du har följande fel:

ld: symbol(er) hittades inte för arkitektur x86_64

clang: error: linkerkommandot misslyckades med exit-kod 1 (använd -v för att se anrop)

Du kör faktiskt Clang som kompilerar till x86_64. Du måste köra GCC som du kompilerade. Normalt när du kompilerar GCC som en korskompilator ger du den ett annat namn än GCC (vilket är ett av konfigureringsskriptalternativen för GCC när du kompilerar det) så att du kan se skillnaden mellan GCC som tillhandahålls av systemet och ditt eget GCC-kors kompilator.

mikezang

till
Originalaffisch
22 maj 2010
Tokyo, Japan
  • 4 augusti 2015
cqexbesd sa: Jag gissar bara här men jag tror att du kan behöva ha gperf installerat. Börja sedan bygga från grunden - d.v.s. gör distclean eller liknande - eller ta bara bort din katalog och expandera tar-filen igen.
Bra! Igår kväll hittade jag den här sidan http://stackoverflow.com/questions/3040801/error-compiling-gcc-undefined-reference-to-libc-name-p , felet är borta efter att ha följt det.