¿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?
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 llamanlib1.a
ylib2.a
, puedes utilizar el siguiente comando:Este comando enlazará las bibliotecas
lib1.a
ylib2.a
al ejecutable llamadoexample
.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.