Iné

Symbol(y) chyby Mac sa nenašiel pre architektúru x86_64

Tam

Pôvodný plagát
22. júla 2016
  • 22. júla 2016
Ahoj všetci,

Pracujem na projekte, ktorý spočíva v kompilácii Windows aplikácie na Mac. Aplikácia je napísaná v C++ s Qt. Pozostáva z knižníc a hlavného projektu:
http://hpics.li/d8bb2ec
Projekt využíva externú knižnicu ODA na správu súborov .dwg a .dgn.
Problém je v tom, že keď skompilujem prvú knižnicu (MdCore), dostanem chybu: symbol(y) sa nenašli pre architektúru x86_64.
Najprv som do argumentu qmake pridal -stdlib=libstdc++, ale Qt mi vygenerovalo 0 bajtové súbory, takže to nebolo riešenie.
Skúšal som rôzne verzie knižnice ODA: 32bit, 64bit pre OSX 10.7 a 10.11. (Môj Mac používa OSX 10.11)
Urobil som príkaz „súbor“ v mojich knižniciach a tu je výstup:

:
.a: aktuálny archív ar náhodná knižnica

.dylib:
Univerzálny binárny súbor Mach-0 s 2 architektúrami
(pre architektúru x68_64): Mach-0 64-bitová dynamicky prepojená zdieľaná knižnica x86_64
(pre architektúru i386): Mach-0 dynamicky prepojená zdieľaná knižnica i386

Skúšal som kompilovať na 32 a 64bit, ale nič sa nemení. Trpím týmto problémom dva týždne a neviem, čo mám robiť

Vytvoril som tému na fóre Qt, možno tam nájdete viac informácií:
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
Ak má niekto tip alebo riešenie, budem mať záujem

Vďaka ! C

cqexbesd

4. júna 2009


Nemecko
  • 22. júla 2016
Neviem nič o qmake, ale možno by ste mali zverejniť, aké príkazy kompilátora majú kompilovať a možno niekto bude schopný vidieť, čo je zlé.

Tam

Pôvodný plagát
22. júla 2016
  • 22. júla 2016
ahoj cqexbesd, ďakujem za odpoveď, tu je začiatok zostaveného výstupu:

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

17:34:10: Proces '/Users/developpement/Qt/5.7/clang_64/bin/qmake' sa skončil normálne

17:34:10: Začiatok: '/usr/bin/make'

... C

cqexbesd

4. júna 2009
Nemecko
  • 24. júla 2016
Myslel som tým, že qmake je len nástroj na volanie kompilátora. Môžete nájsť riadok, kde qmake volá kompilátor? Pravdepodobne ho nevolá správne alebo by veci fungovali. Je aspoň niekde začať.

Tam

Pôvodný plagát
22. júla 2016
  • 25. júla 2016
Myslím, že je to tu:
Kód: |_+_|
vo výstupe kompilácie mám tieto riadky niekoľkokrát, ale mení sa iba posledný riadok (zmení sa názov súboru)

Upraviť: Tu sú rovnaké riadky, ale s medzerami medzi nimi
Kód: |_+_| Naposledy upravené moderátorom: 25. júla 2016 C

cqexbesd

4. júna 2009
Nemecko
  • 25. júla 2016
Mala by tam byť aj linka na prepojenie – napr. riadok, kde sa volá clang++ bez argumentu -c. Môže byť užitočné, ak môžete vložiť odkaz na celý výstup v skutočnosti.

Tam

Pôvodný plagát
22. júla 2016
  • 26. júla 2016
Nemyslím si, že je možné zmeniť argumenty kompilátora. Môžem to urobiť s výzvou.
Tu je úplný výstup (je veľmi dlhý! 100 000 riadkov): http://textup.fr/171939hC


Edit: Kompiloval som s výzvou, takže mám na výstupe viac riadkov a posledné riadky sú zaujímavé:


Nedefinované symboly pre architektúru x86_64:

Kód: |_+_| Naposledy upravené moderátorom: 26. júla 2016 C

cqexbesd

4. júna 2009
Nemecko
  • 26. júla 2016
Myslím si, že výstup 100 000 pre zostavu z čohokoľvek okrem najkomplikovanejšieho systému je pravdepodobne znakom toho, že sa niekde niečo pokazilo – ale to je všeobecnejší komentár o stave odvetvia.

Späť k vášmu konkrétnemu problému. Nevidím chyby prepojenia, ktoré ste zverejnili v „úplnom výstupe“, ale zdá sa, že ide len o bežné chyby prepájača. Rovnako ako na iných platformách môžete použiť nm (alebo Google) na nájdenie, kde sú tieto symboly definované, a zdá sa, že je to v /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation pre mňa (ale mám veľmi starý mac, takže pre vás to nemusí byť pravda).

Neodkázali by ste priamo na túto knižnicu. Skúste pridať kód: |_+_| k vašim príznakom linkera.

Tam

Pôvodný plagát
22. júla 2016
  • 27. júla 2016
Áno, máš pravdu !! Ďakujem veľmi pekne, už môžem zostaviť! S týmto problémom som čelil 3 týždne! Mnohokrat dakujem ! S

zibby

5. februára 2019
  • 5. februára 2019
cqexbesd povedal: Myslím si, že výstup 100 000 pre zostavu z čohokoľvek okrem najkomplikovanejšieho systému je pravdepodobne znakom toho, že sa veci niekde pokazili – ale to je všeobecnejší komentár o stave odvetvia.

Späť k vášmu konkrétnemu problému. Nevidím chyby prepojenia, ktoré ste zverejnili v „úplnom výstupe“, ale zdá sa, že ide len o bežné chyby prepájača. Rovnako ako na iných platformách môžete použiť nm (alebo Google) na nájdenie, kde sú tieto symboly definované, a zdá sa, že je to v /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation pre mňa (ale mám veľmi starý mac, takže pre vás to nemusí byť pravda).

Neodkázali by ste priamo na túto knižnicu. Skúste pridať kód: |_+_| k vašim príznakom linkera.
S

zibby

5. februára 2019
  • 5. februára 2019
ahojte chlapci ... narazil som na veľmi podobný problém ... ale používam terminál na kompiláciu ... môže mi niekto pomôcť, ako môžem urobiť rovnaké riešenie v prípade terminálu?

Mám pripravený súbor ./configure a beží hladko, ale dostanem ffi... súvisiace 'symbols not found...' a niečo, čo treba urobiť s linkerom, keď spustím make

okieiam

17. decembra 2016
  • 8. februára 2019
zibbi povedal: ahoj chlapci ... narazil som na veľmi podobný problém ... ale používam terminál na kompiláciu ... môže mi niekto pomôcť, ako môžem urobiť rovnaké riešenie v prípade terminálu?

Mám pripravený súbor ./configure a beží hladko, ale dostanem ffi... súvisiace 'symbols not found...' a niečo, čo treba urobiť s linkerom, keď spustím make
env CPPFLAGS='-I/home/foo/sw/include' LDFLAGS='-L/home/foo/sw/lib/' ./configure