Друго

Не са намерени символи за грешка в Mac за архитектура x86_64

Там

Оригинален плакат
22 юли 2016 г
  • 22 юли 2016 г
Здравейте всички,

Работя по проект, който се състои в компилиране на приложение за Windows на Mac. Приложението е написано на C++ с Qt. Състои се от библиотеки и основния проект:
http://hpics.li/d8bb2ec
Проектът използва външна библиотека, ODA, за управление на .dwg и .dgn файлове.
Проблемът е, че когато компилирам първата библиотека (MdCore), получавам грешка: символ(и) не са намерени за архитектура x86_64.
Първоначално добавих -stdlib=libstdc++ към аргумента qmake, но Qt ми генерира 0 байтови файлове, така че това не беше решението.
Опитах различна версия на ODA библиотеката: 32-битова, 64-битова за OSX 10.7 и 10.11. (Моят Mac е на OSX 10.11)
Направих командата 'file' в моите библиотеки и ето изхода:

:
.a: текуща архивна произволна библиотека

.dylib:
Mach-0 универсален двоичен файл с 2 архитектури
(за архитектура x68_64): Mach-0 64-битова динамично свързана споделена библиотека x86_64
(за архитектура i386): Mach-0 динамично свързана споделена библиотека i386

Опитах се да компилирам на 32 и 64 бита, но не променя нищо. От две седмици съм с този проблем и не знам какво мога да направя

Направих тема във форума на Qt, може би ще намерите повече информация:
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
Ако някой има идея или решение ще ми е интересно

Благодаря ! ° С

cqexbesd

4 юни 2009 г


Германия
  • 22 юли 2016 г
Не знам нищо за qmake, но може би просто трябва да публикувате какви са вашите команди на компилатора за компилиране и може би някой ще може да види какво не е наред.

Там

Оригинален плакат
22 юли 2016 г
  • 22 юли 2016 г
здравейте cqexbesd, благодаря за вашия отговор, ето началото на изхода за изграждане:

17:34:10: Начало: '/Users/developpement/Qt/5.7/clang_64/bin/qmake' /Users/developpement/Desktop/Mediacad2/MdCore/MdCore.pro -r -spec macx-clang CONFIG+=G+= CONFIG+=debug CONFIG x86_64 CONFIG+=qml_debug

17:34:10: Процесът '/Users/developpement/Qt/5.7/clang_64/bin/qmake' завърши нормално

17:34:10: Начало: '/usr/bin/make'

... ° С

cqexbesd

4 юни 2009 г
Германия
  • 24 юли 2016 г
Това, което имах предвид, беше, че qmake е просто инструмент за извикване на компилатора. Можете ли да намерите реда, където qmake извиква компилатора? Вероятно не го извиква правилно или нещата ще работят. Поне от къде да започне.

Там

Оригинален плакат
22 юли 2016 г
  • 25 юли 2016 г
Мисля, че е тук:
Код: |_+_|
в моя компилационен изход имам тези редове няколко пъти, но само последният ред се променя (името на файла се променя)

Редактиране: тук са същите редове, но с интервали между тях
Код: |_+_| Последна редакция от модератор: 25 юли 2016 г ° С

cqexbesd

4 юни 2009 г
Германия
  • 25 юли 2016 г
Трябва да има и свързваща линия - напр. ред, където clang++ се извиква без аргумента -c. Може да е полезно, ако всъщност можете да поставите връзка към целия изход.

Там

Оригинален плакат
22 юли 2016 г
  • 26 юли 2016 г
Не мисля, че е възможно да се променят аргументите на компилатора. Може да го направя с подкана.
Ето пълния изход (много е много дълъг! 100 000 реда): http://textup.fr/171939hC


Редактиране: Компилирах с подканата, така че имам повече редове на изхода, а последните редове са интересни:


Недефинирани символи за архитектура x86_64:

Код: |_+_| Последна редакция от модератор: 26 юли 2016 г ° С

cqexbesd

4 юни 2009 г
Германия
  • 26 юли 2016 г
Мисля, че 100K изход за компилация от всичко, освен от най-сложната система, вероятно е знак, че нещата са се объркали някъде - но това е по-общ коментар за състоянието на индустрията.

Обратно към вашия конкретен проблем. Не виждам грешките при свързване, които сте публикували в 'пълния изход', но това изглежда просто като обикновени грешки при свързване. Както при други платформи, можете да използвате nm (или Google), за да намерите къде са дефинирани тези символи и изглежда, че е в /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation за мен (но имам много стар Mac, така че може да не е вярно за вас).

Не бихте се свързали директно с тази библиотека. Опитайте да добавите код: |_+_| към вашите флагове за свързване.

Там

Оригинален плакат
22 юли 2016 г
  • 27 юли 2016 г
Да, прав си !! Благодаря ви много, сега мога да компилирам! От 3 седмици се сблъсках с този проблем! Благодаря много ! С

zibby

5 февруари 2019 г
  • 5 февруари 2019 г
cqexbesd каза: Мисля, че 100K изход за компилация от всичко друго освен най-сложната система вероятно е знак, че нещата са се объркали някъде - но това е по-общ коментар за състоянието на индустрията.

Обратно към вашия конкретен проблем. Не виждам грешките при свързване, които сте публикували в 'пълния изход', но това изглежда просто като обикновени грешки при свързване. Както при други платформи, можете да използвате nm (или Google), за да намерите къде са дефинирани тези символи и изглежда, че е в /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation за мен (но имам много стар Mac, така че може да не е вярно за вас).

Не бихте се свързали директно с тази библиотека. Опитайте да добавите код: |_+_| към вашите флагове за свързване.
С

zibby

5 февруари 2019 г
  • 5 февруари 2019 г
Здравейте момчета ... аз се сблъсках с много подобен проблем ... но използвам терминала за компилиране ... може ли някой да помогне как мога да направя същото решение в случай на терминал?

Имам готов файл ./configure и той работи гладко, но получавам ffi... свързани с 'символите не са намерени ...' и нещо общо с линкера, когато стартирам make

okieiam

17 декември 2016 г
  • 8 февруари 2019 г
zibbi каза: здравейте момчета ... аз се сблъсках с много подобен проблем ... но използвам терминала за компилиране ... може ли някой да помогне как мога да направя същото решение в случай на терминал?

Имам готов файл ./configure и той работи гладко, но получавам ffi... свързани с 'символите не са намерени ...' и нещо общо с линкера, когато стартирам make
env CPPFLAGS='-I/home/foo/sw/include' LDFLAGS='-L/home/foo/sw/lib/' ./configure