clang++
使用和编译时出现此错误-fsanitize=address -m32
:
/usr/bin/ld: cannot find /usr/lib/llvm-3.6/bin/../lib/clang/3.6.0/lib/linux/libclang_rt.asan-i386.a: No such file or directory
/usr/bin/ld: cannot find /usr/lib/llvm-3.6/bin/../lib/clang/3.6.0/lib/linux/libclang_rt.asan_cxx-i386.a: No such file or directory
我需要哪个包?我已经尝试过libclang-3.6-dev
clang 3.7
我还遇到了一个错误-m64
:
/usr/bin/ld: cannot find /usr/lib/llvm-3.7/bin/../lib/clang/3.7.1/lib/linux/libclang_rt.asan-x86_64.a: No such file or directory
/usr/bin/ld: cannot find /usr/lib/llvm-3.7/bin/../lib/clang/3.7.1/lib/linux/libclang_rt.asan_cxx-x86_64.a: No such file or directory
clang 3.7(和 3.8)的错误-m64
仅发生在 travis-ci 上 - 这意味着我在使用 3.4/3.5/3.6 时没有遇到任何问题。
答案1
正如其他人所说,这是 clang-3.7 和 clang-3.8 打包方式中的一个错误:https://llvm.org/bugs/show_bug.cgi?id=22757
幸运的是,安装后修复损坏的软件包并不难。你只需要下载正确的库,并将它们放在正确的目录中。
首先,转到http://llvm.org/releases/download.html并找到匹配的版本。我运行的是 64 位 Ubuntu 14.04,因此要修补 clang-3.8,我需要“Clang for x86_64 Ubuntu 14.04”。直接下载,或复制右键单击并“复制链接地址”并使用 wget:
wget http://llvm.org/releases/3.8.0/clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz
解压缩:
tar -xf clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz
然后复制库文件(使用 -n 以避免覆盖现有文件):
sudo cp -n clang+llvm-3.8.0-x86_64-linux-gnu/lib/clang/3.8.0/lib/linux/*.a /usr/lib/llvm-3.8/lib/clang/3.8.0/lib/linux/
如果需要,请对已安装的任何旧版本的 clang 重复此操作,但请注意,如果您使用的 Linux 内核比 4.1 更新,而 clang 版本早于 3.8,您可能会遇到 -fsanitize=memory 的另一个错误:https://llvm.org/bugs/show_bug.cgi?id=24155