搭建CMU15445的project 0 环境,前面git的部分已经完成,接下来需要在ubuntu-18.04 安装clang 14
安装clang14 方法一(试过了对于我的谜之系统没有用)
参考博文: CMU15445(2023 spring) lab - 环境配置
使用命令:
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo vi /etc/apt/sources.list
在llvm官网,找到对应ubuntu版本的语句,粘贴复制到 /etc/apt/路径下的sources.list文件中
例如:对于Ubuntu18.04应粘贴复制以下代码:
然后执行以下语句
clang -v #若之前有下载过clang,需要提前查看版本便于后面选择
sudo apt update
sudo apt-get install clang-format clang-tidy clang-tools clang
sudo apt-get purge clang-10 # 卸载老版本,按实际情况选择参数
sudo apt-get purge libclang-10-dev
最后通过clang -v
检验是否下载成功
我在该方法的尝试中,执行语句sudo apt-get install clang-format clang-tidy clang-tools clang
没有成功,会提示如下图等有依赖 导致安装失败,遂尝试方法2。
安装clang14 方法二 (成功)
参考以下博文:
ubuntu20.04 安装clang
ubuntu14.04安装clang
在 Linux 下使用 clang 3.0 + llvm 3.0 + libc++
在官网github中,找到自己ubuntu版本的链接,如下图所示,我要找的是14.0.0版本的clang,系统是x86_64-linux-gnu-ubuntu-18.04
点击改行,把clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz下载到自己电脑上后。可以先放到虚拟机的桌面上,然后sudo cp 文件名 /usr/local/
,把文件复制到 /usr/local 文件夹下。接下来执行语句:
cd /usr/local
sudo tar xvf clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz #解压缩包
sudo mv clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04 llvm
#将解压缩后的clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04文件夹重命名为"llvm"并移动到当前目录下
export PATH="$PATH:/usr/local/llvm/bin" #添加临时环境变量
可以采用 ubuntu添加环境变量的四种方法 中的第四种方法,永久添加至环境变量中
sudo vim /etc/environment #修改environment文件
#在PATH="/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin"中加入 ":命令行路径"
最后尝试clang -v
,终于成功
有需要的小伙伴可以多试试几种方法
下载好clang14后,继续配置cmu15445环境
以下,如果同是配置cmu15445的同学可能会出现以下问题:
- clang14后会出现
"!! We recommend that you use clang-12 for developing BusTub. You're using xxx, which is not clang."
可以根据 CMU15445(2023 spring) lab - 环境配置 所述在CMakeList.txt中添加自己的clang路径set(CMAKE_C_COMPILER "/usr/bin/clang") set(CMAKE_CXX_COMPILER "/usr/bin/clang++")
- 后续在
cmake ..
和make -j 4
过程中,提示了我的cmake等级不够,于是升级cmake版本: 在Linux上安装其他版本的cmake 或 升级cmake - 在
make -j 4
的时候,运行到93%报错 提示fatal error: 'charconv' file not found
,如下图所示
于是根据 这篇文章 发现,是gcc g++版本太低gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
,至少是8.1版本支持 charconv,于是参考 Ubuntu18.04 GCC9 安装 和 Ubuntu问题——Ubuntu18.04 更新gcc和g++的版本号升级gcc和g++版本至gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~18.04)
成功更新gcc g++版本,再执行make命令,成功执行到100%sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-9 g++-9 cd /usr/bin sudo rm gcc g++ sudo ln -s gcc-9 gcc sudo ln -s g++-9 g++
测试:
cd build
make starter_trie_test
./test/starter_trie_test
显示YOU HAVE 5 DISABLED TESTS
修改test/primer/starter_trie_test.cpp
文件,删除五处的测试名 DISABLED_
前缀
// TEST(StarterTest, DISABLED_TrieNodeInsertTest)
TEST(StarterTest, TrieNodeInsertTest) { ... }
//TEST(StarterTest, DISABLED_TrieNodeRemoveTest)
TEST(StarterTest, TrieNodeRemoveTest) { ... }
//TEST(StarterTest, DISABLED_TrieInsertTest)
TEST(StarterTest, TrieInsertTest) { ... }
//TEST(StarterTrieTest, DISABLED_RemoveTest)
TEST(StarterTrieTest, RemoveTest) { ... }
//TEST(StarterTrieTest, DISABLED_ConcurrentTest1)
TEST(StarterTrieTest, ConcurrentTest1) { ... }
再执行测试语句,成功
格式化:
$ make format
$ make check-lint
$ make check-clang-tidy-p0