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 compilo archivos vinculados con llvm-link y paso mis bibliotecas personalizadas y mi pase de compilador a clang?

Ahora mismo estoy usando la siguiente línea:
clang -Xclang -load -Xclang ../pass/pass.so -O2 -I../library/src/include/ -L../library/src/debug/ -DTAG_BITS=15 -lib1 -lib2 example.ll -o example

donde estoy utilizando mi pase y example.ll es un archivo de ejemplo que he enlazado con un archivo de tiempo de ejecución (necesario para el pase) mediante llvm-link. Compila, pero clang está omitiendo las bibliotecas y utilizando las funciones internas en su lugar:

clang: argumento no utilizado durante la compilación: '-I ../library/src/include/' [-Wunused-command-line-argument]

¿Por qué se están omitiendo las bibliotecas? Si estoy haciendo algo mal, ¿hay alguna otra forma en la que pueda compilar los módulos enlazados?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la bandera -I en el comando que estás utilizando. La bandera -I se utiliza para especificar el directorio donde el compilador debe buscar los archivos de encabezado. Sin embargo, en tu caso, el directorio especificado por -I se trata como un argumento de línea de comando no utilizado porque no hay archivos de encabezado incluidos desde ese directorio.

    Si deseas enlazar las bibliotecas especificadas por -lib1 y -lib2, debes utilizar la bandera -l en su lugar. Por ejemplo, si las bibliotecas se llaman lib1.a y lib2.a, puedes utilizar el siguiente comando:

    clang -Xclang -load -Xclang ../pass/pass.so -O2 -L../library/src/debug/ -lib1 -lib2 example.ll -o example -l:lib1.a -l:lib2.a
    

    Este comando enlazará las bibliotecas lib1.a y lib2.a al ejecutable llamado example.

    Alternativamente, si deseas incluir archivos de encabezado desde el directorio especificado por -I, debes asegurarte de que haya archivos de encabezado para incluir desde ese directorio y luego utilizar la directiva #include apropiada en tu código.

Comments are closed.