es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo vincular Libtooling con cmake

Según la documentación, tengo el siguiente proyecto cmake.

cmake_minimum_required(VERSION 3.5)

project(teeest LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(LLVM REQUIRED)
find_package(Clang REQUIRED)

add_executable(teeest main.cpp)
target_link_libraries(teeest
    PRIVATE
    clangAST
    clangFrontend
    clangTooling
)

Pero cuando intento construir el proyecto, obtengo el siguiente error:

/usr/bin/ld: no se puede encontrar -lclangAST
/usr/bin/ld: no se puede encontrar -lclangFrontend
/usr/bin/ld: no se puede encontrar -lclangTooling

He instalado el paquete llvm desde el repositorio de Archlinux.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el enlazador no puede encontrar tres bibliotecas: libclangAST, libclangFrontend y libclangTooling. Estas forman parte de la biblioteca LLVM y son necesarias para construir el ejecutable teeest.

    Existen varias posibles razones para el error:

    • Esto puede deberse a que el paquete LLVM no está instalado correctamente en su máquina. Puede intentar reinstalarlo o verificar si hay alguna dependencia faltante.
    • Es posible que el enlazador esté buscando las bibliotecas en la ruta incorrecta. Puede verificar la ruta de las bibliotecas faltantes ejecutando ldconfig -p | grep libclang en la terminal. Si las bibliotecas no están listadas, es posible que necesite agregar su ruta a la variable de entorno LD_LIBRARY_PATH o especificarla utilizando la función link_directories() de CMake.
    • También es posible que el paquete que ha instalado no incluya estas bibliotecas. En este caso, es posible que necesite compilar LLVM desde el código fuente o encontrar un paquete diferente que incluya las bibliotecas necesarias.

    Una vez que haya resuelto el problema, debería poder construir el proyecto teeest exitosamente.

Comments are closed.