Alte

Simbolurile de eroare Mac nu au fost găsite pentru arhitectura x86_64

Acolo

Poster original
22 iulie 2016
  • 22 iulie 2016
Buna tuturor,

Lucrez la un proiect care consta in compilarea unei aplicatii Windows pe Mac. Aplicația este scrisă în C++ cu Qt. Este compus din biblioteci și proiectul principal:
http://hpics.li/d8bb2ec
Proiectul folosește o bibliotecă externă, ODA, pentru a gestiona fișierele .dwg și .dgn.
Problema este că atunci când compilez prima bibliotecă (MdCore), primesc o eroare: simbol(e) nu au fost găsite pentru arhitectura x86_64.
La început am adăugat -stdlib=libstdc++ la argumentul qmake, dar Qt mi-a generat fișiere de 0 octeți, deci nu a fost soluția.
Am încercat diferite versiuni ale bibliotecii ODA: 32 de biți, 64 de biți pentru OSX 10.7 și 10.11. (Mac-ul meu este pe OSX 10.11)
Am făcut comanda „fișier” în bibliotecile mele și aici rezultatul:

:
.a: arhivă arhivă actuală bibliotecă aleatorie

.dylib:
Binar universal Mach-0 cu 2 arhitecturi
(pentru arhitectura x68_64): bibliotecă partajată Mach-0 pe 64 de biți conectată dinamic x86_64
(pentru arhitectura i386): bibliotecă partajată Mach-0 legată dinamic i386

Am încercat să compilez pe 32 și 64 de biți, dar nu schimbă nimic. Sunt cu această problemă de două săptămâni și nu știu ce pot face

Am făcut un subiect pe forumul Qt, poate puteți găsi mai multe informații:
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
Daca cineva are un indiciu sau o solutie ma intereseaza

Mulțumiri ! C

cqexbesd

4 iunie 2009


Germania
  • 22 iulie 2016
Nu știu nimic despre qmake, dar poate ar trebui să postezi ce comenzi ale compilatorului trebuie să compilați și poate cineva va putea vedea ce este în neregulă.

Acolo

Poster original
22 iulie 2016
  • 22 iulie 2016
salut cqexbesd, mulțumesc pentru răspuns, aici este începutul ieșirii de compilare:

17:34:10: Începe : '/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: Procesul „/Users/developpement/Qt/5.7/clang_64/bin/qmake” sa încheiat normal

17:34:10: Începe: „/usr/bin/make”

... C

cqexbesd

4 iunie 2009
Germania
  • 24 iulie 2016
Ceea ce am vrut să spun a fost că qmake este doar un instrument pentru apelarea compilatorului. Puteți găsi linia în care qmake apelează compilatorul? Probabil că nu o apelează corect sau lucrurile ar funcționa. E cel puțin de unde să înceapă.

Acolo

Poster original
22 iulie 2016
  • 25 iulie 2016
cred ca e aici:
Cod: |_+_|
în ieșirea mea de compilare am acele linii de mai multe ori, dar numai ultima linie se schimbă (numele fișierului se schimbă)

Edit: aici sunt aceleași linii, dar cu spații între ele
Cod: |_+_| Ultima modificare de către un moderator: 25 iulie 2016 C

cqexbesd

4 iunie 2009
Germania
  • 25 iulie 2016
Ar trebui să existe și o linie de legătură - de ex. o linie în care clang++ este apelată fără argumentul -c. De fapt, ar putea fi util dacă puteți lipi un link către întreaga ieșire.

Acolo

Poster original
22 iulie 2016
  • 26 iulie 2016
Nu cred că este posibil să schimbi argumentele compilatorului. S-ar putea să o fac cu solicitarea.
Iată rezultatul complet (este foarte, foarte lung! 100.000 de linii): http://textup.fr/171939hC


Editare: am compilat cu promptul, așa că am mai multe linii la ieșire, iar ultimele linii sunt interesante:


Simboluri nedefinite pentru arhitectura x86_64:

Cod: |_+_| Ultima modificare de către un moderator: 26 iulie 2016 C

cqexbesd

4 iunie 2009
Germania
  • 26 iulie 2016
Cred că o ieșire de 100K pentru o construcție din orice, cu excepția celui mai complicat sistem, este probabil un semn că lucrurile au mers prost undeva - dar acesta este un comentariu mai general despre starea industriei.

Înapoi la problema ta specifică. Nu văd erorile de conectare pe care le-ați postat în „ieșirea completă”, totuși aceasta pare a fi doar erori obișnuite de linker. Ca și pe alte platforme, puteți folosi nm (sau Google) pentru a găsi unde sunt definite acele simboluri și pare să fie în /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation pentru mine (dar am o Mac vechi, așa că poate să nu fie adevărat pentru tine).

Nu ai face link direct la acea bibliotecă. Încercați să adăugați codul: |_+_| la steaguri de linker.

Acolo

Poster original
22 iulie 2016
  • 27 iulie 2016
Da ai dreptate !! Mulțumesc mult, pot compila acum! M-am confruntat cu această problemă timp de 3 săptămâni! Mulțumesc mult ! CU

zibby

5 februarie 2019
  • 5 februarie 2019
cqexbesd a spus: Cred că o ieșire de 100K pentru o construcție din orice, cu excepția celui mai complicat sistem, este probabil un semn că lucrurile au mers prost undeva - dar acesta este un comentariu mai general despre starea industriei.

Înapoi la problema ta specifică. Nu văd erorile de conectare pe care le-ați postat în „ieșirea completă”, totuși aceasta pare a fi doar erori obișnuite de linker. Ca și pe alte platforme, puteți folosi nm (sau Google) pentru a găsi unde sunt definite acele simboluri și pare să fie în /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation pentru mine (dar am o Mac vechi, așa că poate să nu fie adevărat pentru tine).

Nu ai face link direct la acea bibliotecă. Încercați să adăugați codul: |_+_| la steaguri de linker.
CU

zibby

5 februarie 2019
  • 5 februarie 2019
salut băieți... m-am confruntat cu o problemă foarte asemănătoare... dar folosesc terminalul pentru a compila... poate cineva să mă ajute cu privire la cum pot face aceeași soluție în cazul terminalului?

Am un fișier ./configure gata și funcționează fără probleme, dar primesc ffi... „simboluri nu au fost găsite...” și ceva de-a face cu linkerul când rulez make

okieiam

17 decembrie 2016
  • 8 februarie 2019
zibbi a spus: salut băieți... m-am confruntat cu o problemă foarte asemănătoare... dar folosesc terminalul pentru a compila... poate cineva să mă ajute cu privire la cum pot face aceeași soluție în cazul terminalului?

Am un fișier ./configure gata și funcționează fără probleme, dar primesc ffi... „simboluri nu au fost găsite...” și ceva de-a face cu linkerul când rulez make
env CPPFLAGS='-I/home/foo/sw/include' LDFLAGS='-L/home/foo/sw/lib/' ./configure