如何clang-14
在Ubuntu 23.10上安装?
该命令apt list --all-versions
仅显示版本 16。由于项目要求,我需要旧版本。
如何clang-14
在Ubuntu 23.10上安装?
该命令apt list --all-versions
仅显示版本 16。由于项目要求,我需要旧版本。
我尝试编译以获取Gerbera,一个流行的 DLNA 服务器运行证明是徒劳的。依赖项似乎没问题。该文档没有提到任何需要的 make 标志。因此,当我尝试制作时,构建达到 100%,然后失败
[100%]链接 CXX 可执行非洲菊带有以下消息:
/usr/bin/ld: liblibgerbera.a(sqlite_database.cc.o): 对符号'sqlite3_mprintf'的未定义引用 /usr/bin/ld: /lib/x86_64-linux-gnu/libsqlite3.so.0: 添加符号时出错:命令行中缺少 DSO clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) make[2]: *** [CMakeFiles/gerbera.dir/build.make:98: gerbera] 错误 1 make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/gerbera.dir/all] 错误 2 make: *** [Makefile:130: all] 错误 2我不熟悉此类问题,因此如果有人向我解释,或者如果可能的话,帮助我解决它,我将不胜感激
操作系统:Ubuntu 18.04
已经有一些关于如何clang
在 Ubuntu 中安装的帖子,但是其中很多已经过时了,我的问题是针对安装 clang 作为安装YouCompleteMe的一部分。
首先,按照这个答案和那里提供的链接中的指示,我运行了这些命令:
$ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main"
然后我运行并可以验证是否按预期添加了$ vim /etc/apt/sources.list
对应的新行。llvm
然后我跑了:
$ apt-get install clang-8 lldb-8 lld-8 --print-uris
获取有关所需磁盘空间的信息,在本例中为:
The following NEW packages will be installed:
binfmt-support clang-8 lib32gcc1 lib32stdc++6 libc6-i386 libclang-
common-8-dev libclang1-8 libffi-dev liblldb-8 libobjc-7-dev libobjc4
libomp-8-dev libomp5-8 libpfm4 libpython-stdlib lld-8 lldb-8
llvm-8 llvm-8-dev llvm-8-runtime python python-lldb-8 python-minimal
python-six python2.7 python2.7-minimal
0 upgraded, 26 newly installed, 0 to remove and 0 not upgraded.
Need to get 71,4 MB of archives.
After this operation, 412 MB of additional disk space will be used.
现在,在实际安装这些软件包之前,我再次阅读了YouCompleteMe的 README 文件,并注意到它说:
只有当您确定它是 8.0.0 或更高版本时,您才能使用系统 libclang 或 clangd,否则不要。即使是这样,我们也建议尽可能使用来自 llvm.org 的官方二进制文件。确保为您的操作系统下载正确的存档文件。
我们强烈建议不要使用系统 libclang 或 clangd 而不是上游编译的二进制文件。随机的东西可能会破裂。省去麻烦,使用上游预建的 libclang 或 clangd。
我猜当他们说“系统 libclang”时,他们指的是libclang
我要使用的安装apt-get
(这是他们实际指的吗?如果有人知道他们所说的“系统 libclang”是什么意思,请告诉我)。所以,我决定关注他们提供的 LLVM 链接。在那里,我点击了“预建二进制文件”部分下的“Ubuntu 18.04”。然后开始下载tar.xz
文件,然后我运行:
$ tar -xJf clang*.tar.xz
这篇文章暗示我应该运行:
$ cd clang*
$ sudo cp -R * /usr/local/
所以现在我看到我有两种安装 clang 的方法:通过和解压缩apt-get
二进制文件。
YouCompleteMe 是否要求一种不寻常的安装方式clang
?在 Ubuntu 18.04
中安装的正确方法是什么?clang
上下文:我有一个 bash 脚本,它从 MinGW 交叉编译的 DLL 生成一个 Windows 导入库。作为构建过程的一部分,它运行llvm-dlltool-6.0
,因为这恰好是我安装时sudo apt-get install -y clang
(截至 2019 年 5 月)安装的该工具的特定版本。但是,我不确定这是否会是未来的版本,我真的不想将脚本与 clang 的版本绑定。
这似乎是 llvm 工具包中的一个缺陷。有许多工具带有后缀,并且没有符号链接到工具名称(我有两个llvm-dlltool-6.0
和llvm-dlltool-8
in /usr/bin/
)。
为我的系统解决这个问题的正确方法是使用update-alternatives
. 但是,我不希望每个运行构建脚本的人都这样做,也不希望每次更新 clang 时都需要不断地修复 Dockerfile。
是否有一种好方法(在 bash 脚本中)可以找到以llvm-dlltool
PATH 开头的最高版本后缀二进制文件?我可以ls /usr/bin/llvm-dlltool-* | tail -n1
,但我不能确定每个用户都将它安装在那个位置(如果用户确实有符号链接,我也想尊重符号链接llvm-dlltool
)。
我一辈子都想不出如何让 C++17 在 Ubuntu 16.04 上运行。
这适用于 Ubuntu 18.04:
sudo apt-get update
sudo apt-get install clang-6.0
它将 C++17 标准库头文件安装在/usr/include/c++/7
. 但是,当我在 Ubuntu 16.04 中运行相同的命令时,我会在 中获得 C++14 标头/usr/include/c++/5
,并且 C++17 功能将无法编译。
我也尝试按照此安装clang-7,但这导致了以下错误:
clang: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.22' not found (required by clang)
抱歉,如果这是一个愚蠢的问题;我对这些东西很陌生,可能缺少一些明显的东西。
我clang-format
在 Ubuntu 18.04 LTS 上sudo apt install clang-format
安装并且安装成功。我现在可以执行clang-format-6.0
,但是当我ClangFormat
在 vim 中使用时,它告诉我“找不到 clang-format”。我该如何解决这个问题?
在 Ubuntu 16.04 中,我可以:
$ sudo apt install clang
$ scan-build --help
USAGE: scan-build [options] <build command> [build options]
...
但在 Ubuntu 18.04 中,安装后clang
,scan-build
并没有安装可执行文件。
如何在 Ubuntu 18.04 上apt
安装Clang 静态分析器?
尝试sudo apt-get install
Clang++ 时出现以下错误:
Note, selecting 'clang-tidy-4.0' for regex 'Clang+'
Note, selecting 'python-clang-5.0' instead of 'python-clang-x.y'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
python-clang-3.5 : Breaks: python-clang-3.6 but 1:3.6.2-3ubuntu2 is to be installed
Breaks: python-clang-3.7 but 1:3.7.1-2ubuntu2 is to be installed
Breaks: python-clang-3.8 but 1:3.8-2ubuntu4 is to be installed
python-clang-3.6 : Breaks: python-clang-3.5 but 1:3.5.2-3ubuntu1 is to be installed
Breaks: python-clang-3.7 but 1:3.7.1-2ubuntu2 is to be installed
Breaks: python-clang-3.8 but 1:3.8-2ubuntu4 is to be installed
python-clang-3.7 : Breaks: python-clang-3.5 but 1:3.5.2-3ubuntu1 is to be installed
Breaks: python-clang-3.6 but 1:3.6.2-3ubuntu2 is to be installed
Breaks: python-clang-3.8 but 1:3.8-2ubuntu4 is to be installed
python-clang-3.8 : Breaks: python-clang-3.5 but 1:3.5.2-3ubuntu1 is to be installed
Breaks: python-clang-3.6 but 1:3.6.2-3ubuntu2 is to be installed
Breaks: python-clang-3.7 but 1:3.7.1-2ubuntu2 is to be installed
python-clang-3.9 : Breaks: python-clang-3.5 but 1:3.5.2-3ubuntu1 is to be installed
Breaks: python-clang-3.6 but 1:3.6.2-3ubuntu2 is to be installed
Breaks: python-clang-3.7 but 1:3.7.1-2ubuntu2 is to be installed
Breaks: python-clang-3.8 but 1:3.8-2ubuntu4 is to be installed
python-clang-4.0 : Breaks: python-clang-3.5 but 1:3.5.2-3ubuntu1 is to be installed
Breaks: python-clang-3.6 but 1:3.6.2-3ubuntu2 is to be installed
Breaks: python-clang-3.7 but 1:3.7.1-2ubuntu2 is to be installed
Breaks: python-clang-3.8 but 1:3.8-2ubuntu4 is to be installed
Breaks: python-clang-3.9 but 1:3.9.1-4ubuntu3~16.04.2 is to be installed
python-clang-5.0 : Breaks: python-clang-3.5 but 1:3.5.2-3ubuntu1 is to be installed
Breaks: python-clang-3.6 but 1:3.6.2-3ubuntu2 is to be installed
Breaks: python-clang-3.7 but 1:3.7.1-2ubuntu2 is to be installed
Breaks: python-clang-3.8 but 1:3.8-2ubuntu4 is to be installed
Breaks: python-clang-3.9 but 1:3.9.1-4ubuntu3~16.04.2 is to be installed
我不确定如何解决这些依赖关系,也不知道一个好的解决方法。我对 Linux 比较陌生。
我正在使用 Ubuntu 16.04 LTS
任何信息,将不胜感激。就我在论坛上能够阅读的内容而言,我应该删除罪魁祸首程序或将其升级到所需的版本。但是从错误消息中我无法真正收集到这种情况下的罪魁祸首。
libasan 有许多类似命名的包(gcc 和 clang 的地址清理器):
$ apt-cache search libasan | grep -v dbg | grep -v cross
libasan2 - AddressSanitizer -- a fast memory error detector
libasan3 - AddressSanitizer -- a fast memory error detector
libasan4 - AddressSanitizer -- a fast memory error detector
libasan0 - AddressSanitizer -- a fast memory error detector
(输出来自 Ubuntu 17.10。Ubuntu 18.04 也有libasan5
。)