ld 无法在 linux mint 20 上找到 libclang

问题描述

这里的所有 clang/llvm 新手...

我刚刚在我的 Linux Mint 20 Ulyana(基于 Ubuntu 20.04 Focal Fossa)上安装了 llvm 和 clang,以便将它与 Crystal 语言自动绑定生成工具“crystal_lib”一起使用。

clang 已正确安装:

$ clang --version                                                                                            
clang version 10.0.0-4ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

但是 ld(由“crystal_lib”工具的 Makefile 使用)找不到它:

$ make                                                                                                                
crystal build src/main.cr
/usr/bin/ld: impossibile trovare -lclang
collect2: error: ld returned 1 exit status

在详细模式下调用 ld 会返回一些有用的错误

$ ld -lclang --verbose

ld: modalità elf_x86_64
tentativo di aprire /usr/local/lib/x86_64-linux-gnu/libclang.so non riuscito
tentativo di aprire /usr/local/lib/x86_64-linux-gnu/libclang.a non riuscito
tentativo di aprire /lib/x86_64-linux-gnu/libclang.so non riuscito
tentativo di aprire /lib/x86_64-linux-gnu/libclang.a non riuscito
tentativo di aprire /usr/lib/x86_64-linux-gnu/libclang.so non riuscito
tentativo di aprire /usr/lib/x86_64-linux-gnu/libclang.a non riuscito
tentativo di aprire /usr/lib/x86_64-linux-gnu64/libclang.so non riuscito
tentativo di aprire /usr/lib/x86_64-linux-gnu64/libclang.a non riuscito
tentativo di aprire /usr/local/lib64/libclang.so non riuscito
tentativo di aprire /usr/local/lib64/libclang.a non riuscito
tentativo di aprire /lib64/libclang.so non riuscito
tentativo di aprire /lib64/libclang.a non riuscito
tentativo di aprire /usr/lib64/libclang.so non riuscito
tentativo di aprire /usr/lib64/libclang.a non riuscito
tentativo di aprire /usr/local/lib/libclang.so non riuscito
tentativo di aprire /usr/local/lib/libclang.a non riuscito
tentativo di aprire /lib/libclang.so non riuscito
tentativo di aprire /lib/libclang.a non riuscito
tentativo di aprire /usr/lib/libclang.so non riuscito
tentativo di aprire /usr/lib/libclang.a non riuscito
tentativo di aprire /usr/x86_64-linux-gnu/lib64/libclang.so non riuscito
tentativo di aprire /usr/x86_64-linux-gnu/lib64/libclang.a non riuscito
tentativo di aprire /usr/x86_64-linux-gnu/lib/libclang.so non riuscito
tentativo di aprire /usr/x86_64-linux-gnu/lib/libclang.a non riuscito
ld: impossibile trovare -lclang

看起来 ld 无法找到 libclang.so 和/或 libclang.a。

我的 /usr/lib/clang/10.0.0/lib/linux 目录中有完整的 libclang_xxxxxx.o/a/so/syms 文件集合,但不是 ld 看起来的简单“libclang.so”寻找。

/usr/lib/llvm-10/lib/clang/10.0.0/lib/linux $ ls                                                                                                                                             
clang_rt.crtbegin-i386.o             libclang_rt.gwp_asan-x86_64.a              libclang_rt.scudo_standalone-x86_64.a
clang_rt.crtbegin-x86_64.o           libclang_rt.hwasan_cxx-x86_64.a            libclang_rt.scudo-x86_64.a
clang_rt.crtend-i386.o               libclang_rt.hwasan_cxx-x86_64.a.syms       libclang_rt.scudo-x86_64.so
clang_rt.crtend-x86_64.o             libclang_rt.hwasan-x86_64.a                libclang_rt.stats_client-i386.a
libclang_rt.asan_cxx-i386.a          libclang_rt.hwasan-x86_64.a.syms           libclang_rt.stats_client-x86_64.a
libclang_rt.asan_cxx-x86_64.a        libclang_rt.hwasan-x86_64.so               libclang_rt.stats-i386.a
libclang_rt.asan_cxx-x86_64.a.syms   libclang_rt.lsan-i386.a                    libclang_rt.stats-x86_64.a
libclang_rt.asan-i386.a              libclang_rt.lsan-x86_64.a                  libclang_rt.tsan_cxx-x86_64.a
libclang_rt.asan-i386.so             libclang_rt.msan_cxx-x86_64.a              libclang_rt.tsan_cxx-x86_64.a.syms
libclang_rt.asan-preinit-i386.a      libclang_rt.msan_cxx-x86_64.a.syms         libclang_rt.tsan-x86_64.a
libclang_rt.asan-preinit-x86_64.a    libclang_rt.msan-x86_64.a                  libclang_rt.tsan-x86_64.a.syms
libclang_rt.asan-x86_64.a            libclang_rt.msan-x86_64.a.syms             libclang_rt.ubsan_minimal-i386.a
libclang_rt.asan-x86_64.a.syms       libclang_rt.profile-i386.a                 libclang_rt.ubsan_minimal-i386.so
libclang_rt.asan-x86_64.so           libclang_rt.profile-x86_64.a               libclang_rt.ubsan_minimal-x86_64.a
libclang_rt.builtins-i386.a          libclang_rt.safestack-i386.a               libclang_rt.ubsan_minimal-x86_64.a.syms
libclang_rt.builtins-x86_64.a        libclang_rt.safestack-x86_64.a             libclang_rt.ubsan_minimal-x86_64.so
libclang_rt.cfi_diag-i386.a          libclang_rt.scudo_cxx-i386.a               libclang_rt.ubsan_standalone_cxx-i386.a
libclang_rt.cfi_diag-x86_64.a        libclang_rt.scudo_cxx_minimal-i386.a       libclang_rt.ubsan_standalone_cxx-x86_64.a
libclang_rt.cfi-i386.a               libclang_rt.scudo_cxx_minimal-x86_64.a     libclang_rt.ubsan_standalone_cxx-x86_64.a.syms
libclang_rt.cfi-x86_64.a             libclang_rt.scudo_cxx-x86_64.a             libclang_rt.ubsan_standalone-i386.a
libclang_rt.dd-x86_64.a              libclang_rt.scudo-i386.a                   libclang_rt.ubsan_standalone-i386.so
libclang_rt.dfsan-x86_64.a           libclang_rt.scudo-i386.so                  libclang_rt.ubsan_standalone-x86_64.a
libclang_rt.dfsan-x86_64.a.syms      libclang_rt.scudo_minimal-i386.a           libclang_rt.ubsan_standalone-x86_64.a.syms
libclang_rt.dyndd-x86_64.so          libclang_rt.scudo_minimal-i386.so          libclang_rt.ubsan_standalone-x86_64.so
libclang_rt.fuzzer-i386.a            libclang_rt.scudo_minimal-x86_64.a         libclang_rt.xray-basic-x86_64.a
libclang_rt.fuzzer_no_main-i386.a    libclang_rt.scudo_minimal-x86_64.so        libclang_rt.xray-fdr-x86_64.a
libclang_rt.fuzzer_no_main-x86_64.a  libclang_rt.scudo_standalone_cxx-i386.a    libclang_rt.xray-profiling-x86_64.a
libclang_rt.fuzzer-x86_64.a          libclang_rt.scudo_standalone_cxx-x86_64.a  libclang_rt.xray-x86_64.a
libclang_rt.gwp_asan-i386.a          libclang_rt.scudo_standalone-i386.a

如果我知道我必须链接到哪个文件,我会很高兴ln -s libclang.so.1 libclang.so

有什么建议吗?有其他人遇到过类似的问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)