运行带有共享库的程序时出错

Error when running program with sharing library

本文关键字:程序 出错 行带 共享 运行      更新时间:2023-10-16

有这样的代码:

#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, "%sn", 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

Library似乎就位了。如何运行这个程序?

ldconfig创建必要的链接并缓存到最近的在命令中指定的目录中找到的共享库行,在/etc/ld.so.conf文件中,以及可信目录中(/lib and/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