Inne

Nie znaleziono symboli błędów Mac dla architektury x86_64

Tam

Oryginalny plakat
22 lipca 2016
  • 22 lipca 2016
Cześć wszystkim,

Pracuję nad projektem polegającym na kompilacji aplikacji Windows na Maca. Aplikacja jest napisana w C++ z użyciem Qt. Składa się z bibliotek i głównego projektu:
http://hpics.li/d8bb2ec
Projekt wykorzystuje zewnętrzną bibliotekę ODA do zarządzania plikami .dwg i .dgn.
Problem polega na tym, że kiedy kompiluję pierwszą bibliotekę (MdCore), pojawia się błąd: nie znaleziono symboli dla architektury x86_64.
Na początku dodałem -stdlib=libstdc++ do argumentu qmake, ale Qt wygenerowało mi pliki 0 bajtowe, więc to nie było rozwiązanie.
Wypróbowałem różne wersje biblioteki ODA: 32bit, 64bit dla OSX 10.7 i 10.11. (Mój Mac jest na OSX 10.11)
Zrobiłem polecenie „plik” w moich bibliotekach i tutaj dane wyjściowe:

:
.a: bieżące archiwum ar losowa biblioteka

.dylib:
Uniwersalny plik binarny Mach-0 z 2 architekturami
(dla architektury x68_64): 64-bitowa dynamicznie dołączana biblioteka współdzielona Mach-0 x86_64
(dla architektury i386): dynamicznie połączona biblioteka współdzielona Mach-0 i386

Próbowałem skompilować na 32 i 64bit, ale niczego to nie zmienia. Mam ten problem od dwóch tygodni nie wiem co mogę zrobić

Zrobiłem temat na forum Qt może znajdziesz więcej informacji :
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
Jeśli ktoś ma wskazówkę lub rozwiązanie będę zainteresowany

Dziękuję ! C

cqexbesd

4 czerwca 2009


Niemcy
  • 22 lipca 2016
Nie wiem nic o qmake, ale może powinieneś po prostu opublikować, jakie polecenia kompilatora mają skompilować, a może ktoś będzie mógł zobaczyć, co jest nie tak.

Tam

Oryginalny plakat
22 lipca 2016
  • 22 lipca 2016
cześć cqexbesd, dzięki za odpowiedź, oto początek danych wyjściowych kompilacji:

17:34:10: Początek: '/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 KONFIG+=qml_debug

17:34:10: Proces '/Users/developpement/Qt/5.7/clang_64/bin/qmake' zakończył się normalnie

17:34:10: Rozpocznij : '/usr/bin/make'

... C

cqexbesd

4 czerwca 2009
Niemcy
  • 24 lipca 2016 r.
Chodziło mi o to, że qmake jest tylko narzędziem do wywoływania kompilatora. Czy możesz znaleźć wiersz, w którym qmake wywołuje kompilator? Przypuszczalnie nie wywołuje go poprawnie lub wszystko będzie działać. To przynajmniej od czego zacząć.

Tam

Oryginalny plakat
22 lipca 2016
  • 25 lipca 2016 r.
Myślę, że jest tutaj :
Kod: |__+_|
w moim wyjściu kompilacji mam te linie kilka razy, ale zmienia się tylko ostatnia linia (zmienia się nazwa pliku)

Edycja : tutaj są te same linie, ale ze spacjami między nimi
Kod: |__+_| Ostatnia edycja przez moderatora: 25.07.2016 C

cqexbesd

4 czerwca 2009
Niemcy
  • 25 lipca 2016 r.
Powinna też być linia łącząca – np. wiersz, w którym wywoływany jest clang++ bez argumentu -c. W rzeczywistości może być przydatne, jeśli możesz wkleić link do całego wyniku.

Tam

Oryginalny plakat
22 lipca 2016
  • 26 lipca 2016
Myślę, że nie da się zmienić argumentów kompilatora. Mogę to zrobić z podpowiedzią.
Oto pełne wyjście (jest bardzo, bardzo długie! 100 000 linii): http://textup.fr/171939hC


Edycja: skompilowałem z zachętą, więc mam więcej wierszy na wyjściu, a ostatnie wiersze są interesujące:


Niezdefiniowane symbole dla architektury x86_64:

Kod: |__+_| Ostatnia edycja przez moderatora: 26.07.2016 C

cqexbesd

4 czerwca 2009
Niemcy
  • 26 lipca 2016
Myślę, że wyjście 100K dla kompilacji z czegokolwiek innego niż najbardziej skomplikowany system jest prawdopodobnie oznaką, że coś poszło nie tak - ale jest to bardziej ogólny komentarz na temat stanu branży.

Wróćmy do twojego konkretnego problemu. Nie widzę błędów linkowania, które zamieściłeś w „pełnych danych wyjściowych”, jednak wygląda to na zwykłe błędy linkera. Podobnie jak na innych platformach, możesz użyć nm (lub Google), aby znaleźć, gdzie te symbole są zdefiniowane i wydaje się, że znajduje się w /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation dla mnie (ale mam bardzo stary mac, więc może to nie być prawdą dla Ciebie).

Nie połączyłbyś się bezpośrednio z tą biblioteką. Spróbuj dodać kod: |__+_| do twoich flag konsolidatora.

Tam

Oryginalny plakat
22 lipca 2016
  • 27 lipca 2016 r.
Tak masz rację !! Dziękuję bardzo, że mogę teraz skompilować! Z tym problemem borykałam się przez 3 tygodnie! Wielkie dzięki ! Z

Zibby

5 lut 2019
  • 5 lut 2019
cqexbesd powiedział: Myślę, że wyjście 100K dla kompilacji z czegokolwiek innego niż najbardziej skomplikowany system jest prawdopodobnie oznaką, że coś poszło nie tak - ale jest to bardziej ogólny komentarz na temat stanu branży.

Wróćmy do twojego konkretnego problemu. Nie widzę błędów linkowania, które zamieściłeś w „pełnych danych wyjściowych”, jednak wygląda to na zwykłe błędy linkera. Podobnie jak na innych platformach, możesz użyć nm (lub Google), aby znaleźć, gdzie te symbole są zdefiniowane i wydaje się, że znajduje się w /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation dla mnie (ale mam bardzo stary mac, więc może to nie być prawdą dla Ciebie).

Nie połączyłbyś się bezpośrednio z tą biblioteką. Spróbuj dodać kod: |__+_| do twoich flag konsolidatora.
Z

Zibby

5 lut 2019
  • 5 lut 2019
Cześć chłopaki ... natknąłem się na bardzo podobny problem ... ale używam terminala do kompilacji ... czy ktoś może pomóc, jak mogę zrobić to samo rozwiązanie w przypadku terminala?

mam gotowy plik ./configure i działa płynnie, ale otrzymuję ffi... powiązane „nie znaleziono symboli ...” i coś związanego z linkerem, gdy uruchamiam make

okieiam

17 grudnia 2016
  • 8 lut 2019
zibbi powiedział: cześć chłopaki ... natknąłem się na bardzo podobny problem ... ale używam terminala do kompilacji ... czy ktoś może pomóc, jak mogę zrobić to samo rozwiązanie w przypadku terminala?

mam gotowy plik ./configure i działa płynnie, ale otrzymuję ffi... powiązane „nie znaleziono symboli ...” i coś związanego z linkerem, gdy uruchamiam make
env CPPFLAGS='-I/home/foo/sw/include' LDFLAGS='-L/home/foo/sw/lib/' ./configure