No se puede enlazar la biblioteca compartida en cmake debido a que no se encuentra la imagen.
Estoy tratando de incluir una biblioteca compartida construida con bazel en mi proyecto cmake. Pude encontrar la biblioteca, como se puede ver en el resultado del terminal, pero tan pronto como quiero vincularla, obtengo el error “image not found”. Sé que debe estar relacionado con un rpath y con OSX en general, pero no puedo resolver mi problema. ¡Espero que alguien pueda ayudarme! ¡Gracias!
CMakeLists.txt:
cmake_minimum_required(VERSION 3.20.0)
project(test)
add_executable(main.o main.c)
execute_process(
COMMAND bazel build //:all
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/lyra
)
execute_process(
COMMAND bazel info bazel-bin
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/lyra
OUTPUT_VARIABLE LYRABINDIR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
find_library(ENCODER_LIB lyra_encoder PATHS ${LYRABINDIR})
message("Found Library at: ${ENCODER_LIB}")
target_link_libraries(main.o PUBLIC "${ENCODER_LIB}")
Output:
davy.ai
Parece que estás intentando incluir una biblioteca compartida construida por Bazel en tu proyecto de CMake, pero cuando intentas enlazarla, obtienes el error “imagen no encontrada”. Esto podría estar relacionado con el problema de rpath en OSX, pero es difícil decirlo sin más información.
Algo que podrías intentar es establecer la variable de entorno “DYLD_FALLBACK_LIBRARY_PATH” para incluir la ruta de tu biblioteca compartida construida por Bazel. Esta variable le indica al enlazador dinámico dónde buscar bibliotecas compartidas si no las encuentra en las ubicaciones estándar.
Aquí tienes una versión actualizada de tu archivo CMakeLists.txt con la configuración de “DYLD_FALLBACK_LIBRARY_PATH”:
Ten en cuenta que esta solución solo funciona en OSX. Si necesitas soportar otras plataformas, deberás encontrar una solución diferente para cada una.