pronunciacion mueble inglés ingles cosas como biblioteca cross-platform linker cmake

cross platform - mueble - Proyecto de construcción que involucra a cmake, ¿cómo hago para que esté al tanto de las bibliotecas?



como se dice biblioteca en inglés (3)

Cuando intento construir este proyecto con cmake y gcc en una máquina Linux de 64 bits (debian), recibo un error del enlazador:

Linking C executable ../../../../cpsadamsx /home/dala/lib64/libSimTKcommon.so: undefined reference to `dlopen'' /home/dala/lib64/libSimTKcommon.so: undefined reference to `dlclose'' /home/dala/lib64/libSimTKcommon.so: undefined reference to `dlerror'' /home/dala/lib64/libSimTKcommon.so: undefined reference to `dlsym'' collect2: ld returned 1 exit status make[2]: *** [cpsadamsx] Error 1 make[1]: *** [sundials/examples/cpodes/serial/CMakeFiles/cpsadamsx.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs....

Aparentemente dlopen, dlclose, dlerror y dlsym son referencias a libdl.so. Tengo esa biblioteca en /lib64/libdl.so.2, pero ¿por qué no se encuentra?

Hubiera sido una configuración ''./ normal; hacer; make install''-path Pude haber configurado la variable LIBS y emitido el comando configure de esta manera (creo):

export LIBS=-ldl && ./configure

¿Pero cómo lo hago ahora?

ACTUALIZAR:

Parece que la biblioteca (o al menos una) se encuentra, pero no contiene los símbolos en cuestión. Tal vez lo intente con la biblioteca de 32 bits en / lib?

¿Hay alguna manera de desensamblar /lib64/libdl.so.2 para asegurarse de que tenga las referencias dlopen, etc.?

El problema ahora parece guiar las herramientas de compilación a la versión correcta de la biblioteca.


Probablemente necesites agregar target_link_libraries () - ver el texto del enlace


Como esta pregunta se muestra en Google y ambas respuestas no apuntan a la solución correcta, aquí está:

En su CMakeLists.txt, agregue ${CMAKE_DL_LIBS} para enlazar con idl. Debe ser similar a esto:

target_link_libraries(ExpandableTest ${CMAKE_DL_LIBS} Expandable ExpandableTestLibrary )


Agregue esto en CMakeLists.txt y debería funcionar:

SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ldl")