De Outros

Símbolo (s) de erro do Mac não encontrado (s) para a arquitetura x86_64

Pôster original
22 de julho de 2016
  • 22 de julho de 2016
Oi pessoal,

Estou trabalhando em um projeto que consiste em compilar um aplicativo Windows no Mac. O aplicativo é escrito em C ++ com Qt. É composto por bibliotecas e o projeto principal:
http://hpics.li/d8bb2ec
O projeto usa uma biblioteca externa, ODA, para gerenciar arquivos .dwg e .dgn.
O problema é que quando eu compilo a primeira biblioteca (MdCore), recebo um erro: símbolo (s) não encontrado (s) para a arquitetura x86_64.
No início eu adicionei -stdlib = libstdc ++ ao argumento qmake, mas o Qt gerou arquivos de 0 bytes, então não era a solução.
Tentei uma versão diferente da biblioteca ODA: 32 bits, 64 bits para OSX 10.7 e 10.11. (Meu Mac está em OSX 10.11)
Eu fiz o comando 'arquivo' em minhas bibliotecas e aqui está a saída:

:
.a: biblioteca aleatória de arquivo ar atual

.dylib:
Binário universal Mach-0 com 2 arquiteturas
(para arquitetura x68_64): Biblioteca compartilhada dinamicamente vinculada Mach-0 de 64 bits x86_64
(para arquitetura i386): Biblioteca compartilhada i386 vinculada dinamicamente Mach-0

Tentei compilar em 32 e 64 bits, mas não mudou nada. Estou neste problema há duas semanas não sei o que posso fazer

Eu criei um tópico no fórum Qt, talvez você possa encontrar mais informações:
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
Se alguém tiver uma pista ou uma solução estarei interessado

Obrigado ! C

cqexbesd

4 de junho de 2009


Alemanha
  • 22 de julho de 2016
Eu não sei nada sobre qmake, mas talvez você deva apenas postar quais são os comandos do seu compilador para compilar e talvez alguém possa ver o que está errado.

Pôster original
22 de julho de 2016
  • 22 de julho de 2016
oi cqexbesd, obrigado pela sua resposta, aqui está o início da saída da compilação:

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

17:34:10: O processo '/Users/developpement/Qt/5.7/clang_64/bin/qmake' terminou normalmente

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

... C

cqexbesd

4 de junho de 2009
Alemanha
  • 24 de julho de 2016
O que eu quis dizer é que o qmake é apenas uma ferramenta para chamar o compilador. Você consegue encontrar a linha onde qmake chama o compilador? Presumivelmente, ele não está chamando corretamente ou as coisas estariam funcionando. É pelo menos um lugar para começar.

Pôster original
22 de julho de 2016
  • 25 de julho de 2016
Acho que está aqui:
Código: Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.8 -Wall -W -fPIC -DMDCORE_LIBRARY -D_TOOLKIT_IN_DLL_ -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../MdCore -I. -I../../include -I../../include/teigha -I../../include/Extensions/ExServices -I../../include/Extensions/win -I../../include/Extensions/win/Crypt -I../../../../Qt/5.7/clang_64/lib/QtWidgets.framework/Headers -I../../../../Qt/5.7/clang_64/lib/QtGui.framework/Headers -I../../../../Qt/5.7/clang_64/lib/QtCore.framework/Headers -I. -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/AGL.framework/Headers -I../../../../Qt/5.7/clang_64/mkspecs/macx-clang -F/Users/developpement/Qt/5.7/clang_64/lib -o mduserio.o ../../MdCore/mduserio.cpp
na saída de minha compilação, tenho essas linhas várias vezes, mas apenas a última linha muda (o nome do arquivo muda)

Editar: aqui estão as mesmas linhas, mas com espaços entre elas
Código: Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.8 -Wall -W -fPIC -DMDCORE_LIBRARY -D_TOOLKIT_IN_DLL_ -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../MdCore -I. -I../../include -I../../include/teigha -I../../include/Extensions/ExServices -I../../include/Extensions/win -I../../include/Extensions/win/Crypt -I../../../../Qt/5.7/clang_64/lib/QtWidgets.framework/Headers -I../../../../Qt/5.7/clang_64/lib/QtGui.framework/Headers -I../../../../Qt/5.7/clang_64/lib/QtCore.framework/Headers -I. -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/AGL.framework/Headers -I../../../../Qt/5.7/clang_64/mkspecs/macx-clang -F/Users/developpement/Qt/5.7/clang_64/lib -o mduserio.o ../../MdCore/mduserio.cpp Última edição por um moderador: 25 de julho de 2016 C

cqexbesd

4 de junho de 2009
Alemanha
  • 25 de julho de 2016
Também deve haver uma linha de ligação - por exemplo, uma linha em que clang ++ é chamado sem o argumento -c. Pode ser útil se você puder colar um link para toda a saída de fato.

Pôster original
22 de julho de 2016
  • 26 de julho de 2016
Não creio que seja possível alterar os argumentos do compilador. Posso fazer isso com o prompt.
Aqui está o resultado completo (é muito, muito longo! 100.000 linhas): http://textup.fr/171939hC


Edit: Eu compilei com o prompt, então tenho mais linhas na saída e as últimas linhas são interessantes:


Símbolos indefinidos para arquitetura x86_64:

Código: '_CFArrayGetCount', referenced from: ExSystemServices::ExSystemServices() in ExSystemServices.o '_CFArrayGetValueAtIndex', referenced from: ExSystemServices::ExSystemServices() in ExSystemServices.o '_CFLocaleCopyPreferredLanguages', referenced from: ExSystemServices::ExSystemServices() in ExSystemServices.o '_CFStringGetCharacterAtIndex', referenced from: ExSystemServices::ExSystemServices() in ExSystemServices.o '_CFStringGetLength', referenced from: ExSystemServices::ExSystemServices() in ExSystemServices.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [../debug/libMdCore.1.0.0.dylib] Error 1 Última edição por um moderador: 26 de julho de 2016 C

cqexbesd

4 de junho de 2009
Alemanha
  • 26 de julho de 2016
Acho que a produção de 100K para uma construção de qualquer coisa que não seja o sistema mais complicado é provavelmente um sinal de que as coisas deram errado em algum lugar - mas esse é um comentário mais geral sobre o estado da indústria.

De volta ao seu problema específico. Não vejo os erros de vinculação que você postou na 'saída completa', no entanto, isso parece ser apenas um erro de vinculador regular. Como em outras plataformas, você pode usar nm (ou Google) para encontrar onde esses símbolos estão definidos e parece estar em /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation para mim (mas tenho muito mac antigo, então pode não ser verdade para você).

Você não faria o link diretamente com essa biblioteca. Experimente adicionar Código: -framework CoreFoundation para seus sinalizadores de vinculador.

Pôster original
22 de julho de 2016
  • 27 de julho de 2016
Sim você está certo !! Muito obrigado, posso compilar agora! Eu estava enfrentando esse problema por 3 semanas! Muito obrigado ! COM

zibby

5 de fevereiro de 2019
  • 5 de fevereiro de 2019
cqexbesd disse: Acho que a produção de 100K para uma construção de qualquer coisa, exceto o sistema mais complicado, é provavelmente um sinal de que as coisas deram errado em algum lugar - mas esse é um comentário mais geral sobre o estado da indústria.

De volta ao seu problema específico. Não vejo os erros de vinculação que você postou na 'saída completa', no entanto, isso parece ser apenas um erro de vinculador regular. Como em outras plataformas, você pode usar nm (ou Google) para encontrar onde esses símbolos estão definidos e parece estar em /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation para mim (mas tenho muito mac antigo, então pode não ser verdade para você).

Você não faria o link diretamente com essa biblioteca. Experimente adicionar Código: -framework CoreFoundation para seus sinalizadores de vinculador.
COM

zibby

5 de fevereiro de 2019
  • 5 de fevereiro de 2019
oi pessoal ... encontrei um problema muito semelhante ... mas estou usando o terminal para compilar ... alguém pode ajudar em como posso fazer a mesma solução no caso do terminal?

Eu tenho um arquivo ./configure pronto e ele funciona sem problemas, mas recebo ffi ... relacionado a 'símbolos não encontrados ...' e algo a ver com o vinculador quando executo o make

okieiam

17 de dezembro de 2016
  • 8 de fevereiro de 2019
zibbi disse: oi pessoal ... eu tive um problema muito semelhante ... mas estou usando o terminal para compilar ... alguém pode ajudar em como posso fazer a mesma solução no caso do terminal?

Eu tenho um arquivo ./configure pronto e ele funciona sem problemas, mas recebo ffi ... relacionado a 'símbolos não encontrados ...' e algo a ver com o vinculador quando executo o make
env CPPFLAGS = '- I / home / foo / sw / include' LDFLAGS = '- L / home / foo / sw / lib /' ./configure