Почему я могу скомпилировать против libclang-3.5.so, а не против libclang.so?

Я пытаюсь скомпилировать исходный файл C, который нужно связать с динамической библиотекой, которую я установил через apt-get (libclang.so).

apt-get установили общие библиотеки clang в /usr/lib/x86_64-linux-gnu/. Вот соответствующие файлы:

$ 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

Загрузчик, кажется, знает о libclang:

$ ldconfig -p | grep clang
        libclang.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libclang.so.1

Фактически, моя проблема воспроизводима независимо от содержимого исходного файла I ' Я пытаюсь скомпилировать, пока он содержит действительный код. Итак, я использовал этот исходный файл:

$ cat a.c 
int main(int argc, char** argv) {
  return 0;
}

Компиляция против clang завершается неудачно:

$ gcc a.c -L/usr/lib/x86_64-linux-gnu -lclang
/usr/bin/ld: cannot find -lclang
collect2: error: ld returned 1 exit status

Но компиляция с использованием clang-3.5 (или clang-3.4) завершается успешно:

$ gcc a.c -L/usr/lib/x86_64-linux-gnu -lclang-3.5
$

Мне действительно нужно иметь возможность ссылаться, используя -lclang, а не -lclang-3.5, потому что на самом деле я не могу контролировать, как эта опция компилятора генерируется в моей реальной проблеме. Что я могу сделать, чтобы заставить -lclang работать?

Я использую Ubuntu 14.04 LTS и GCC 4.8.2.

1
задан 1 August 2014 в 02:22

0 ответов

Другие вопросы по тегам:

Похожие вопросы: