Eu estou tentando compilar um arquivo-fonte C, que precisa ser vinculado a uma biblioteca dinâmica que eu instalei através de apt-get
(libclang.so).
apt-get
instalou as bibliotecas compartilhadas clang em /usr/lib/x86_64-linux-gnu/
. Aqui estão os arquivos relevantes:
$ ls -l /usr/lib/x86_64-linux-gnu/libclang*
lrwxrwxrwx 1 root root /usr/lib/x86_64-linux-gnu/libclang-3.4.so -> libclang-3.4.so.1
-rw-r--r-- 1 root root /usr/lib/x86_64-linux-gnu/libclang-3.4.so.1
lrwxrwxrwx 1 root root /usr/lib/x86_64-linux-gnu/libclang-3.5.so -> libclang-3.5.so.1
-rw-r--r-- 1 root root /usr/lib/x86_64-linux-gnu/libclang-3.5.so.1
lrwxrwxrwx 1 root root /usr/lib/x86_64-linux-gnu/libclang.so.1 -> libclang-3.5.so.1
O carregador parece saber sobre a libclang:
$ ldconfig -p | grep clang
libclang.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libclang.so.1
Na verdade, meu problema é reproduzível, não importa qual seja o conteúdo do arquivo de origem que estou tentando compilar, contanto que contenha um código válido. Então, eu usei esse arquivo de origem:
$ cat a.c
int main(int argc, char** argv) {
return 0;
}
Compilando contra clangagem:
$ gcc a.c -L/usr/lib/x86_64-linux-gnu -lclang
/usr/bin/ld: cannot find -lclang
collect2: error: ld returned 1 exit status
Mas compilar contra o clang-3.5 (ou o clang-3.4) é bem-sucedido:
$ gcc a.c -L/usr/lib/x86_64-linux-gnu -lclang-3.5
$
Eu realmente preciso ser capaz de vincular usando -lclang
e não -lclang-3.5
, porque, na verdade, não posso controlar como essa opção de compilador é gerada em meu problema do mundo real. O que posso fazer para fazer -lclang
funcionar?
Estou usando o Ubuntu 14.04 LTS e o GCC 4.8.2.