Jiný

Symbol(y) chyby Mac nenalezen pro architekturu x86_64

Tam

Původní plakát
22. července 2016
  • 22. července 2016
Ahoj všichni,

Pracuji na projektu, který spočívá v kompilaci aplikace pro Windows na Mac. Aplikace je napsána v C++ s Qt. Skládá se z knihoven a hlavního projektu:
http://hpics.li/d8bb2ec
Projekt využívá externí knihovnu ODA ke správě souborů .dwg a .dgn.
Problém je, že když zkompiluji první knihovnu (MdCore), dostanu chybu: symbol(y) nebyl nalezen pro architekturu x86_64.
Nejprve jsem do argumentu qmake přidal -stdlib=libstdc++, ale Qt mi vygenerovalo 0 bajtové soubory, takže to nebylo řešení.
Zkoušel jsem různé verze knihovny ODA: 32bit, 64bit pro OSX 10.7 a 10.11. (Můj Mac je na OSX 10.11)
Udělal jsem příkaz 'file' ve svých knihovnách a zde výstup:

:
.a: aktuální ar archiv náhodná knihovna

.dylib:
Univerzální binární soubor Mach-0 se 2 architekturami
(pro architekturu x68_64): Mach-0 64bitová dynamicky propojená sdílená knihovna x86_64
(pro architekturu i386): Mach-0 dynamicky propojená sdílená knihovna i386

Zkoušel jsem kompilovat na 32 a 64bit, ale nic to nemění. Trpím tímto problémem dva týdny a nevím, co mohu dělat

Založil jsem téma na fóru Qt, možná najdete více informací:
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
Pokud má někdo tip nebo řešení, budu mít zájem

Dík ! C

cqexbesd

4. června 2009


Německo
  • 22. července 2016
Nevím nic o qmake, ale možná byste měli napsat, jaké příkazy kompilátoru mají kompilovat, a možná někdo bude schopen vidět, co je špatně.

Tam

Původní plakát
22. července 2016
  • 22. července 2016
ahoj cqexbesd, děkuji za vaši odpověď, zde je začátek výstupu sestavení:

17:34:10: Začátek: '/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' skončil normálně

17:34:10: Začátek: '/usr/bin/make'

... C

cqexbesd

4. června 2009
Německo
  • 24. července 2016
Měl jsem na mysli, že qmake je pouze nástroj pro volání kompilátoru. Můžete najít řádek, kde qmake volá kompilátor? Pravděpodobně jej nevolá správně nebo by věci fungovaly. Je alespoň někde začít.

Tam

Původní plakát
22. července 2016
  • 25. července 2016
Myslím, že je to tady:
Kód: |_+_|
ve výstupu kompilace mám tyto řádky několikrát, ale změní se pouze poslední řádek (změní se název souboru)

Edit: zde jsou stejné řádky, ale s mezerami mezi nimi
Kód: |_+_| Naposledy upraveno moderátorem: 25. července 2016 C

cqexbesd

4. června 2009
Německo
  • 25. července 2016
Měla by zde být i linka propojující - např. řádek, kde se volá clang++ bez argumentu -c. Může být užitečné, pokud můžete vložit odkaz na celý výstup ve skutečnosti.

Tam

Původní plakát
22. července 2016
  • 26. července 2016
Nemyslím si, že je možné změnit argumenty kompilátoru. Mohu to udělat s výzvou.
Zde je úplný výstup (je velmi dlouhý! 100 000 řádků): http://textup.fr/171939hC


Edit: Zkompiloval jsem s výzvou, takže mám na výstupu více řádků a poslední řádky jsou zajímavé:


Nedefinované symboly pro architekturu x86_64:

Kód: |_+_| Naposledy upraveno moderátorem: 26. července 2016 C

cqexbesd

4. června 2009
Německo
  • 26. července 2016
Myslím, že výstup 100 000 pro sestavení z čehokoli kromě nejsložitějšího systému je pravděpodobně známkou toho, že se někde něco pokazilo – ale to je obecnější komentář o stavu tohoto odvětví.

Zpět k vašemu konkrétnímu problému. Nevidím chyby propojení, které jste zveřejnili v „úplném výstupu“, ale vypadá to, že jde jen o běžné chyby linkeru. Stejně jako na jiných platformách můžete pomocí nm (nebo Google) najít, kde jsou tyto symboly definovány, a zdá se, že je to v /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation pro mě (ale mám velmi starý mac, takže to pro vás nemusí být pravda).

Neodkázali byste přímo na tuto knihovnu. Zkuste přidat kód: |_+_| k vašim příznakům linkeru.

Tam

Původní plakát
22. července 2016
  • 27. července 2016
Ano, máš pravdu !! Děkuji mnohokrát, už mohu sestavit! S tímto problémem jsem se potýkal 3 týdny! Díky moc ! S

zibby

5. února 2019
  • 5. února 2019
cqexbesd řekl: Myslím, že výstup 100 000 pro sestavení z čehokoli kromě nejkomplikovanějšího systému je pravděpodobně známkou toho, že se někde něco pokazilo – ale to je obecnější komentář o stavu tohoto odvětví.

Zpět k vašemu konkrétnímu problému. Nevidím chyby propojení, které jste zveřejnili v „úplném výstupu“, ale vypadá to, že jde jen o běžné chyby linkeru. Stejně jako na jiných platformách můžete pomocí nm (nebo Google) najít, kde jsou tyto symboly definovány, a zdá se, že je to v /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation pro mě (ale mám velmi starý mac, takže to pro vás nemusí být pravda).

Neodkázali byste přímo na tuto knihovnu. Zkuste přidat kód: |_+_| k vašim příznakům linkeru.
S

zibby

5. února 2019
  • 5. února 2019
ahoj kluci ... narazil jsem na velmi podobný problém ... ale ke kompilaci používám terminál ... může mi někdo prosím pomoci, jak mohu udělat stejné řešení v případě terminálu?

Mám připravený soubor ./configure a běží hladce, ale dostanu ffi... související 'symbols not found...' a něco, co je potřeba udělat s linkerem, když spustím make

okieiam

17. prosince 2016
  • 8. února 2019
zibbi řekl: ahoj kluci ... narazil jsem na velmi podobný problém ... ale ke kompilaci používám terminál ... může mi někdo prosím pomoci, jak mohu udělat stejné řešení v případě terminálu?

Mám připravený soubor ./configure a běží hladce, ale dostanu ffi... související 'symbols not found...' a něco, co je potřeba udělat s linkerem, když spustím make
env CPPFLAGS='-I/home/foo/sw/include' LDFLAGS='-L/home/foo/sw/lib/' ./configure