Övrig

Mac-felsymbol(er) hittades inte för arkitektur x86_64

där

Originalaffisch
22 juli 2016
  • 22 juli 2016
Hej allihopa,

Jag håller på med ett projekt som består i att kompilera ett Windows-program på Mac. Ansökan är skriven i C++ med Qt. Den är sammansatt med bibliotek och huvudprojektet:
http://hpics.li/d8bb2ec
Projektet använder ett externt bibliotek, ODA, för att hantera .dwg- och .dgn-filer.
Problemet är när jag kompilerar det första biblioteket (MdCore), får jag ett felmeddelande: symbol(er) hittades inte för arkitektur x86_64.
Först lade jag till -stdlib=libstdc++ till qmake-argumentet men Qt genererade mig 0 byte-filer, så det var inte lösningen.
Jag har provat olika versioner av ODA-biblioteket: 32bit, 64bit för OSX 10.7 och 10.11. (Min Mac är på OSX 10.11)
Jag gjorde kommandot 'fil' på mina bibliotek och här utdata:

:
.a: nuvarande slumpmässiga arkivbibliotek

.dylib:
Mach-0 universell binär med 2 arkitekturer
(för arkitektur x68_64): Mach-0 64-bitars dynamiskt länkat delat bibliotek x86_64
(för arkitektur i386): Mach-0 dynamiskt länkat delat bibliotek i386

Jag har försökt kompilera på 32 och 64bit men det ändrar ingenting. Jag har haft det här problemet i två veckor, jag vet inte vad jag kan göra

Jag har skapat ett ämne på Qt-forumet, kanske kan du hitta mer information:
https://forum.qt.io/topic/69171/compile-generate-0-byte-files-on-os-x/11
https://forum.qt.io/topic/69171/compile-generate-0-byte-files-on-os-x/11
Om någon har en aning eller en lösning så är jag intresserad

Tack ! C

cqexbesd

4 juni 2009


Tyskland
  • 22 juli 2016
Jag kan inget om qmake men du kanske bara borde posta vad dina kompilatorkommandon är att kompilera och kanske någon kan se vad som är fel.

där

Originalaffisch
22 juli 2016
  • 22 juli 2016
hej cqexbesd, tack för ditt svar, här är början på byggutgången:

17:34:10: Börja : '/Users/developpement/Qt/5.7/clang_64/bin/qmake' /Users/developpement/Desktop/Mediacad2/MdCore/MdCore.pro -r -spec macx-clang CONFIG+==debug CONFIG+ x86_64 CONFIG+=qml_debug

17:34:10: Processen '/Users/developpement/Qt/5.7/clang_64/bin/qmake' har avslutats normalt

17:34:10: Börja: '/usr/bin/make'

... C

cqexbesd

4 juni 2009
Tyskland
  • 24 juli 2016
Vad jag menade var att qmake bara är ett verktyg för att anropa kompilatorn. Kan du hitta raden där qmake anropar kompilatorn? Förmodligen anropar den inte den korrekt, annars skulle saker och ting fungera. Det är åtminstone någonstans att börja.

där

Originalaffisch
22 juli 2016
  • 25 juli 2016
Jag tror det är här:
Kod: |_+_|
i min kompileringsutdata har jag de raderna flera gånger, men bara den sista raden ändras (namnet på filen ändras)

Edit: här är samma rader men med mellanslag mellan dem
Kod: |_+_| Senast redigerad av en moderator: 25 juli 2016 C

cqexbesd

4 juni 2009
Tyskland
  • 25 juli 2016
Det ska också finnas en länklinje - t.ex. en rad där clang++ anropas utan argumentet -c. Det kan vara användbart om du kan klistra in en länk till hela resultatet faktiskt.

där

Originalaffisch
22 juli 2016
  • 26 juli 2016
Jag tror inte att det är möjligt att ändra kompilatorns argument. Jag kan göra det med uppmaningen.
Här är hela resultatet (det är väldigt väldigt långt! 100 000 rader): http://textup.fr/171939hC


Edit: Jag kompilerade med prompten så jag har fler rader på utdata, och de sista raderna är intressanta:


Odefinierade symboler för arkitektur x86_64:

Kod: |_+_| Senast redigerad av en moderator: 26 juli 2016 C

cqexbesd

4 juni 2009
Tyskland
  • 26 juli 2016
Jag tror att 100 000 utdata för ett bygge från allt annat än det mest komplicerade systemet förmodligen är ett tecken på att saker har gått fel någonstans - men det är en mer allmän kommentar om branschens tillstånd.

Tillbaka till ditt specifika problem. Jag ser inte länkningsfelen du postade i 'fullständig utdata', men detta ser bara ut att vara ett vanligt länkfel. Som på andra plattformar kan du använda nm (eller Google) för att hitta var dessa symboler är definierade och det verkar finnas i /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation för mig (men jag har en mycket gammal mac så det kanske inte är sant för dig).

Du skulle inte länka direkt mot det biblioteket. Prova att lägga till kod: |_+_| till dina länkflaggor.

där

Originalaffisch
22 juli 2016
  • 27 juli 2016
Ja du har rätt !! Tack så mycket jag kan sammanställa nu! Jag hade det här problemet i 3 veckor! Tack så mycket ! MED

zibby

5 februari 2019
  • 5 februari 2019
cqexbesd sa: Jag tror att 100K utdata för ett bygge från allt annat än det mest komplicerade systemet förmodligen är ett tecken på att saker har gått fel någonstans - men det är en mer allmän kommentar om branschens tillstånd.

Tillbaka till ditt specifika problem. Jag ser inte länkningsfelen du postade i 'fullständig utdata', men detta ser bara ut att vara ett vanligt länkfel. Som på andra plattformar kan du använda nm (eller Google) för att hitta var dessa symboler är definierade och det verkar finnas i /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation för mig (men jag har en mycket gammal mac så det kanske inte är sant för dig).

Du skulle inte länka direkt mot det biblioteket. Prova att lägga till kod: |_+_| till dina länkflaggor.
MED

zibby

5 februari 2019
  • 5 februari 2019
hej killar ... jag har stött på ett mycket liknande problem ... men jag använder terminalen för att kompilera ... kan någon hjälpa mig med hur jag kan göra samma lösning i händelse av terminal?

jag har en ./configure-fil redo och den går smidigt men jag får ffi... relaterade 'symboler inte hittade ...' och något att göra med länken när jag kör make

okieiam

17 december 2016
  • 8 februari 2019
zibbi sa: hej killar ... jag har stött på ett mycket liknande problem ... men jag använder terminalen för att kompilera ... kan någon snälla hjälpa mig med hur jag kan göra samma lösning i händelse av terminal?

jag har en ./configure-fil redo och den går smidigt men jag får ffi... relaterade 'symboler inte hittade ...' och något att göra med länken när jag kör make
env CPPFLAGS='-I/home/foo/sw/include' LDFLAGS='-L/home/foo/sw/lib/' ./configure