Otro

Símbolo (s) de error de Mac no encontrado para la arquitectura x86_64

Allí

Poster original
Jul 22, 2016
  • Jul 22, 2016
Hola a todos,

Estoy trabajando en un proyecto que consiste en compilar una aplicación de Windows en Mac. La aplicación está escrita en C ++ con Qt. Está compuesto por bibliotecas y el proyecto principal:
http://hpics.li/d8bb2ec
El proyecto utiliza una biblioteca externa, ODA, para administrar archivos .dwg y .dgn.
El problema es que cuando compilo la primera biblioteca (MdCore), aparece un error: símbolo (s) no encontrado para la arquitectura x86_64.
Al principio agregué -stdlib = libstdc ++ al argumento qmake pero Qt me generó archivos de 0 bytes, por lo que no fue la solución.
Probé una versión diferente de la biblioteca ODA: 32 bits, 64 bits para OSX 10.7 y 10.11. (Mi Mac está en OSX 10.11)
Hice el comando 'archivo' en mis bibliotecas y aquí el resultado:

:
.a: biblioteca aleatoria del archivo ar actual

.dylib:
Binario universal Mach-0 con 2 arquitecturas
(para la arquitectura x68_64): biblioteca compartida x86_64 vinculada dinámicamente Mach-0 de 64 bits
(para la arquitectura i386): biblioteca compartida i386 enlazada dinámicamente Mach-0

He intentado compilar en 32 y 64 bits pero no cambia nada. Estoy en este problema durante dos semanas, no sé qué puedo hacer.

He creado un tema en el foro de Qt, tal vez puedas encontrar más información:
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
Si alguien tiene una pista o una solución me interesará

Gracias ! C

cqexbesd

4 de junio de 2009


Alemania
  • Jul 22, 2016
No sé nada sobre qmake, pero tal vez debería publicar cuáles son los comandos del compilador para compilar y tal vez alguien pueda ver qué está mal.

Allí

Poster original
Jul 22, 2016
  • Jul 22, 2016
hola cqexbesd, gracias por tu respuesta, aquí está el comienzo de la salida de la compilación:

17:34:10: Inicio: '/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: El proceso '/Users/developpement/Qt/5.7/clang_64/bin/qmake' ha finalizado normalmente

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

... C

cqexbesd

4 de junio de 2009
Alemania
  • Jul 24, 2016
Lo que quise decir es que qmake es solo una herramienta para llamar al compilador. ¿Puedes encontrar la línea donde qmake llama al compilador? Es de suponer que no lo está llamando correctamente o las cosas estarían funcionando. Es al menos un lugar para empezar.

Allí

Poster original
Jul 22, 2016
  • Jul 25, 2016
Creo que esta 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
en mi salida de compilación tengo esas líneas varias veces, pero solo cambia la última línea (el nombre del archivo cambia)

Editar: aquí están las mismas líneas pero con espacios entre ellas
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 edición por un moderador: 25 de julio de 2016 C

cqexbesd

4 de junio de 2009
Alemania
  • Jul 25, 2016
También debería haber una línea de enlace, p. Ej. una línea donde se llama clang ++ sin el argumento -c. De hecho, podría ser útil si puede pegar un enlace a toda la salida.

Allí

Poster original
Jul 22, 2016
  • Jul 26, 2016
No creo que sea posible cambiar los argumentos del compilador. Puedo hacerlo con el aviso.
Aquí está la salida completa (¡es muy, muy larga! 100.000 líneas): http://textup.fr/171939hC


Editar: compilé con el indicador, así que tengo más líneas en la salida, y las últimas líneas son interesantes:


Símbolos indefinidos para la arquitectura 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 edición por un moderador: 26 de julio de 2016 C

cqexbesd

4 de junio de 2009
Alemania
  • Jul 26, 2016
Creo que la salida de 100K para una compilación de cualquier cosa que no sea el sistema más complicado es probablemente una señal de que las cosas han salido mal en alguna parte, pero ese es un comentario más general sobre el estado de la industria.

Volvamos a su problema específico. No veo los errores de vinculación que publicó en el 'resultado completo', sin embargo, esto parece ser un error de vinculación regular. Al igual que en otras plataformas, puede usar nm (o Google) para encontrar dónde se definen esos símbolos y parece estar en /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation para mí (pero tengo una muy Mac antiguo, por lo que puede que no sea cierto para ti).

No vincularías directamente a esa biblioteca. Intente agregar Código: -framework CoreFoundation a sus banderas del enlazador.

Allí

Poster original
Jul 22, 2016
  • Jul 27, 2016
Sí, tiene usted razón !! ¡Muchas gracias, puedo compilar ahora! ¡Me enfrenté a este problema durante 3 semanas! Muchas gracias ! CON

zibby

Mar 5, 2019
  • Mar 5, 2019
cqexbesd dijo: Creo que la salida de 100K para una compilación de cualquier cosa que no sea el sistema más complicado es probablemente una señal de que las cosas han salido mal en alguna parte, pero ese es un comentario más general sobre el estado de la industria.

Volvamos a su problema específico. No veo los errores de vinculación que publicó en el 'resultado completo', sin embargo, esto parece ser un error de vinculación regular. Al igual que en otras plataformas, puede usar nm (o Google) para encontrar dónde se definen esos símbolos y parece estar en /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation para mí (pero tengo una muy Mac antiguo, por lo que puede que no sea cierto para ti).

No vincularías directamente a esa biblioteca. Intente agregar Código: -framework CoreFoundation a sus banderas del enlazador.
CON

zibby

Mar 5, 2019
  • Mar 5, 2019
hola chicos ... me encontré con un problema muy similar ... pero estoy usando la terminal para compilar ... ¿alguien puede ayudarme sobre cómo puedo hacer la misma solución en el caso de la terminal?

tengo un archivo ./configure listo y se ejecuta sin problemas, pero obtengo ffi ... relacionados con 'símbolos no encontrados ...' y algo que ver con el vinculador cuando ejecuto make

okieiam

17 de diciembre de 2016
  • Mar 8, 2019
zibbi dijo: hola chicos ... me encontré con un problema muy similar ... pero estoy usando la terminal para compilar ... ¿alguien puede ayudarme sobre cómo puedo hacer la misma solución en el caso de la terminal?

tengo un archivo ./configure listo y se ejecuta sin problemas, pero obtengo ffi ... relacionados con 'símbolos no encontrados ...' y algo que ver con el vinculador cuando ejecuto make
env CPPFLAGS = '- I / home / foo / sw / include' LDFLAGS = '- L / home / foo / sw / lib /' ./configure