Ошибка при запуске программы с библиотекой общего доступа - PullRequest
4 голосов
/ 23 ноября 2011

Есть такой код:

#include <cstdlib>
#include <clang-c/Index.h>

using namespace std;

int main(int argc, char** argv)
{
    CXIndex Index = clang_createIndex(0, 0);
    CXTranslationUnit TU = clang_parseTranslationUnit(Index, 0, argv, argc, 0, 0, CXTranslationUnit_None);
    for (unsigned I = 0, N = clang_getNumDiagnostics(TU); I != N; ++I)
    {
        CXDiagnostic Diag = clang_getDiagnostic(TU, I);
        CXString String = clang_formatDiagnostic(Diag,
                clang_defaultDiagnosticDisplayOptions());
        fprintf(stderr, "%s\n", clang_getCString(String));
        clang_disposeString(String);
    }
    clang_disposeTranslationUnit(TU);

    clang_disposeIndex(Index);

    return 0;
}

И он скомпилирован со следующими флагами:

g++ main.cpp -g -fno-rtti `llvm-config --cxxflags --ldflags --libs` -lclang -o main

Однако, когда я хочу запустить main:

./main

тогда возникает следующая ошибка:

./main: error while loading shared libraries: libclang.so: cannot open shared object file: No such file or directory

Тем не менее:

$ sudo find / -name libclang.so
/usr/local/lib/libclang.so

Библиотека, кажется, на месте. Как запустить эту программу?

1 Ответ

4 голосов
/ 23 ноября 2011

ldconfig создает необходимые ссылки и кеш для самых последних общие библиотеки найдены в каталогах, указанных в команде в файле /etc/ld.so.conf и в доверенных каталогах (/ lib и / usr / lib)

Попробуйте запустить /sbin/ldconfig, а затем, если это не сработает, попробуйте добавить файл /etc/ld.so.conf в "/ usr / local / lib", а затем выполните /sbin/ldconfig

Команда:

  1. Запустите следующую команду и попробуйте снова скомпилировать / запустить

    / SBIN / LDCONFIG

  2. Если это не сработает, сделайте это и попробуйте снова скомпилировать / запустить

    echo "/ usr / local / lib" >> /etc/ld.so.conf / SBIN / LDCONFIG

...