【PaddlePaddle】保姆级教程:Ubuntu22.04+CUDA12.2编译PaddlePaddle源码并安装

博主研一开学想扩展技能,决定支持国产深度学习框架PaddlePaddle,并记录学习历程。详细介绍了在Linux下从源码编译PaddlePaddle的步骤,包括安装WSL2 Ubuntu、gcc、g++、cmake、cuda、cudnn、nccl、anaconda,配置github,以及拉取源码仓库并编译等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

恰逢研一开学,在上课之余想利用这可以自己支配的半年时间再扩展一项技能。

突然想到自己平常在某乎看到众多帖子均在写pytorch大大小小的坑,于是思来想去,决定支持一下国产深度学习框架:PaddlePaddle

开个新坑,记录自己的学习历程

安装WSL2 Ubuntu 22.04 LTS

准备工作

需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。

以管理员身份打开PowerShell并运行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

显示操作成功后,重启电脑即可(注意是重启不是“关机然后启动”):

在这里插入图片描述

注意,重启电脑后只能够安装WSL1

安装 WSL2 之前,必须启用“虚拟机平台”可选功能,以管理员身份打开 PowerShell 并运行:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

显示操作成功后,再次重新启动电脑,以完成WSL安装并更新到 WSL2

重启后,将WSL2设为默认版本,用管理员身份打开 Powershell 输入以下命令:

wsl --set-default-version 2

便捷安装

直接在Microsoft Store搜索ubuntu,选择合适版本,默认只能安装在c盘。

在这里插入图片描述

安装后“打开”即可,按照命令行的指引输入用户名和密码。

手动安装

首先获取安装包:ubuntu2204,其他版本的安装包详见参考文档2

下载完成后,可以看到文件名为Ubuntu2204-221101.AppxBundle,我们将其重命名为Ubuntu2204.zip,并解压缩至你想安装的盘内,可以看到里面的文件结构是这样的:

在这里插入图片描述

双击运行其中的Ubuntu_2204.1.7.0_x64.appx,按照引导进行安装、输入用户名和密码即可完成安装。

收尾工作

最后通过管理员Powershell执行以下命令将 Ubuntu 18.04.6 LTS 设置为 WSL2 去执行:

wsl --set-version Ubuntu-22.04 2

换源和系统更新

以下内容就要进入WSL2 Ubuntu进行操作了,我习惯使用vscode连接WSL

首先对原本的软件源配置文件/etc/apt/sources.list做一个备份:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

然后打开sources.list文件:

sudo vim /etc/apt/sources.list

直接键盘敲下49dd清除其中的全部内容,然后键盘敲下i进入输入模式。

ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror中选择对应版本,我们使用22.04,复制对应内容:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

将内容使用ctrl v粘贴到sources.list中,键盘敲下ESC后继续敲下:wq,按下回车即可完成写入。

最后更新源即可完成源的替换,注意要全部get成功,没有err:

sudo apt update

之后我们使用清华源更新系统:

sudo apt -y update && sudo apt -y upgrade

最后,如果你想用linux自带的python进行源码编译,需要下载python3.7以上的python版本,并设为默认,详情参考参考文档4

由于我习惯用ananconda作为python管理工具,因此不使用自带的python。

安装gcc、g++、cmake

gcc 11.4

sudo apt install gcc

查看gcc版本:

gcc --version

版本高于8.2.0即可,否则无法编译paddle源码,如果仍是gcc 7,使用以下指令升级到gcc 8.4.0:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test && \
sudo apt update && \
sudo apt install gcc-8 && \
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 90

g++ 11.4

sudo apt install g++

查看g++版本:

g++ --version

g++版本需要和gcc版本保持一致,比如都是11的大版本或者都是8的大版本,如果你是从gcc 7升级到gcc 8,可以参考参考文档6进行升级

cmake 3.27

如果按照paddle官方的说法装3.16,会发生下面的问题:CUDA_STANDARD is set to invalid value ‘17’ · Issue #54822 · PaddlePaddle/Paddle (github.com)

PaddlePaddle自己不把github issue给更新到文档里吗???太坑了点吧???

首先获取安装包:

wget -q https://cmake.org/files/LatestRelease/cmake-3.27.0-linux-x86_64.tar.gz

解压:

tar -zxvf cmake-3.27.0-linux-x86_64.tar.gz

配置环境变量,进入~/.bashrc文件:

sudo vim ~/.bashrc

键盘敲击i进入编辑,在末尾添加内容:

export PATH=/home/liyang/cmake-3.27.0-linux-x86_64/bin:$PATH

然后让配置文件生效:

source ~/.bashrc

使用cmake --version查看到相应版本即说明安装成功。

安装cuda、cudnn、nccl

cuda 12.2

首先去CUDA Toolkit Archive | NVIDIA Developer找到自己想安装的版本,单击进去,按照自己的ubuntu系统进行选择:

在这里插入图片描述

按照installation instructions下的两个命令安装就行:

wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run && \
sudo sh cuda_12.2.2_535.104.05_linux.run

安装完成后,添加环境变量

首先进入~/.bashrc文件:

sudo vim ~/.bashrc

键盘敲击i进入编辑,在末尾添加如下两行内容:

export PATH=/usr/local/cuda-12.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64$LD_LIBRARY_PATH

然后让配置文件生效:

source ~/.bashrc

使用nvcc --version查看到版本即说明安装成功:

在这里插入图片描述

cudnn 8.9.4.25

安装包在cuDNN Archive | NVIDIA Developer下载,注意版本对cuda对应。

PaddlePaddle 可以使用 cuDNN v5.1 之后的任何一个版本来编译运行,但尽量请保持编译和运行使用的 cuDNN 是同一个版本。 推荐使用最新版本的 cuDNN。

在这里插入图片描述

下载好安装包后,进行解压:

tar -xvf cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz

命令行进入解压后的文件夹,输入以下命令:

sudo cp lib/* /usr/local/cuda-12.2/lib64/ && \
sudo cp include/* /usr/local/cuda-12.2/include/ && \
sudo chmod a+r /usr/local/cuda-12.2/lib64/* && \
sudo chmod a+r /usr/local/cuda-12.2/include/*

完成cudnn的安装。

nccl

进入NVIDIA Collective Communications Library (NCCL) Legacy Download Page | NVIDIA Developer,按照下图指引:

在这里插入图片描述

使用Network installer安装nccl:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb && \
sudo dpkg -i cuda-keyring_1.0-1_all.deb && \
sudo apt-get update && \
sudo apt install libnccl2=2.18.3-1+cuda12.2 libnccl-dev=2.18.3-1+cuda12.2

此时出现了以下问题:

/sbin/ldconfig.real: /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 is not a symbolic link

/sbin/ldconfig.real: Can’t link /usr/lib/wsl/lib/libnvoptix_loader.so.1 to libnvoptix.so.1
/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link

再次执行最后一行的安装命令后显示已经安装了,所以暂时搁置这个问题。

安装anaconda

也可以直接使用自带的python,我个人更喜欢包管理工具。

Free Download | Anaconda获取安装包链接,然后命令行使用wget拉到本地就行

在这里插入图片描述

wget https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh

将sh文件运行安装即可

bash Anaconda3-2023.07-2-Linux-x86_64.sh

中途会有多次回车和输入"yes"的情况

重启命令行,看到(bash)即表示安装成功

在这里插入图片描述

完成安装,现在新建个env用于之后paddlepaddle的安装

conda create -n paddle python=3.11

进入虚拟环境:

conda activate paddle

安装之后编译必要的包:

pip install numpy protobuf

配置github

安装git:

sudo apt-get install git

随后用git --version检查是否安装成功。

配置用户名:

git config --global user.name xxx

注意把xxx替换成自己的用户名

配置邮箱地址:

git config --global user.email xxx

注意把xxx替换成自己的邮箱

随后用git config --list查看是否配置成功

生成SSH密钥:

ssh-keygen -t rsa -C "xxxx@xxx.com"

注意提替换成自己的邮箱

之后就可以看到生成了~/.ssh目录,并且其中包含了两个文件id_rsaid_rsa.pub

  • 使用vscode直接打开id_rsa.pub,复制其中的内容

  • 打开github,按下图顺序将该ssh key添加进去

在这里插入图片描述

检查是否配置成功

ssh git@github.com

在这里插入图片描述

解决git clone无法连接的问题:

取消Git本身的代理,使用本机的代理。

//取消http代理
git config --global --unset http.proxy
//取消https代理 
git config --global --unset https.proxy

Linux下使用make从源码编译PaddlePaddle

安装必要工具

  • bzip2
sudo apt install -y bzip2
  • make
sudo apt install -y make
  • 其他依赖环境
sudo apt install unrar swig patchelf

设置python相关的环境变量

  1. 找到Python lib的路径,设置PYTHON_LIBRARIES:
find `dirname $(dirname $(which python3.11))` -name "libpython3.11.so"

得到路径:/home/liyang/anaconda3/envs/paddle/lib/libpython3.11.so 注意下面换成自己的路径

export PYTHON_LIBRARY=/home/liyang/anaconda3/envs/paddle/lib/libpython3.11.so
  1. 找到Python Include的路径,设置PYTHON_INCLUDE_DIR:
find `dirname $(dirname $(which python3))`/include -name "python3.11"

得到路径:/home/liyang/anaconda3/envs/paddle/include/python3.11 注意下面换成自己的路径。

export PYTHON_INCLUDE_DIRS=/home/liyang/anaconda3/envs/paddle/include/python3.11
  1. 设置系统环境变量路径:

    将第一步的路径最后两级目录改为/bin/后的路径为:/home/liyang/anaconda3/envs/paddle/bin/

    export PATH=/home/liyang/anaconda3/envs/paddle/bin/:$PATH
    

注意换成自己的路径

拉取源码仓库并编译

以下内容摘自Linux 下使用 make 从源码编译-使用文档-PaddlePaddle深度学习平台

  1. 从github拉取paddlepaddle的源码,进入其对应的Paddle目录下,并切换git分支到develop

    git clone git@github.com:PaddlePaddle/Paddle.git && \
    cd Paddle && \
    git checkout develop
    
  2. 这是最关键的一点,修改git submodule的url,使用SSH而不是http,(如果你配置了科学上网,请跳过此步,如何为wsl配置可以参考参考文档9的一条关于TUN模式的评论,当然我更推荐配置一下,这样就没后面这些破事儿了-.-)

    打开Paddle/.gitmodules文件,复制下面的内容替换其中的内容:

    [submodule "third_party/protobuf"]
    	path = third_party/protobuf
    	url = git@github.com:protocolbuffers/protobuf.git
    	ignore = dirty
    [submodule "third_party/pocketfft"]
    	path = third_party/pocketfft
    	url = https://gitlab.mpcdf.mpg.de/mtr/pocketfft.git
    	ignore = dirty
    [submodule "third_party/gflags"]
    	path = third_party/gflags
    	url = git@github.com:gflags/gflags.git
    	ignore = dirty
    [submodule "third_party/gloo"]
    	path = third_party/gloo
    	url = git@github.com:ziyoujiyi/gloo.git
    	ignore = dirty
    [submodule "third_party/dlpack"]
    	path = third_party/dlpack
    	url = git@github.com:dmlc/dlpack.git
    	ignore = dirty
    [submodule "third_party/utf8proc"]
    	path = third_party/utf8proc
    	url = git@github.com:JuliaStrings/utf8proc.git
    	ignore = dirty
    [submodule "third_party/warpctc"]
    	path = third_party/warpctc
    	url = git@github.com:baidu-research/warp-ctc.git
    	ignore = dirty
    [submodule "third_party/warprnnt"]
    	path = third_party/warprnnt
    	url = git@github.com:PaddlePaddle/warp-transducer.git
    	ignore = dirty
    [submodule "third_party/xxhash"]
    	path = third_party/xxhash
    	url = git@github.com:Cyan4973/xxHash.git
    	ignore = dirty
    [submodule "third_party/pybind"]
    	path = third_party/pybind
    	url = git@github.com:pybind/pybind11.git
    	ignore = dirty
    [submodule "third_party/threadpool"]
    	path = third_party/threadpool
    	url = git@github.com:progschj/ThreadPool.git
    	ignore = dirty
    [submodule "third_party/zlib"]
    	path = third_party/zlib
    	url = git@github.com:madler/zlib.git
    	ignore = dirty
    [submodule "third_party/glog"]
    	path = third_party/glog
    	url = git@github.com:google/glog.git
    	ignore = dirty
    [submodule "third_party/eigen3"]
    	path = third_party/eigen3
    	url = https://gitlab.com/libeigen/eigen.git
    	ignore = dirty
    [submodule "third_party/snappy"]
    	path = third_party/snappy
    	url = git@github.com:google/snappy.git
    	ignore = dirty
    [submodule "third_party/cub"]
    	path = third_party/cub
    	url = git@github.com:NVIDIA/cub.git
    	ignore = dirty
    [submodule "third_party/cutlass"]
    	path = third_party/cutlass
    	url = git@github.com:NVIDIA/cutlass.git
    	ignore = dirty
    [submodule "third_party/xbyak"]
    	path = third_party/xbyak
    	url = git@github.com:herumi/xbyak.git
    	ignore = dirty
    [submodule "third_party/mkldnn"]
    	path = third_party/mkldnn
    	url = git@github.com:oneapi-src/oneDNN.git
    	ignore = dirty
    [submodule "third_party/flashattn"]
    	path = third_party/flashattn
    	url = git@github.com:PaddlePaddle/flash-attention.git
    	ignore = dirty
    [submodule "third_party/gtest"]
    	path = third_party/gtest
    	url = git@github.com:google/googletest.git
    	ignore = dirty
    [submodule "third_party/openblas"]
    	path = third_party/openblas
    	url = git@github.com:xianyi/OpenBLAS.git
    	ignore = dirty
    [submodule "third_party/leveldb"]
    	path = third_party/leveldb
    	url = git@github.com:google/leveldb.git
    	ignore = dirty
    [submodule "third_party/brpc"]
    	path = third_party/brpc
    	url = git@github.com:apache/brpc.git
    	ignore = dirty
    [submodule "third_party/rocksdb"]
    	path = third_party/rocksdb
    	url = git@github.com:Thunderbrook/rocksdb
    	ignore = dirty
    [submodule "third_party/absl"]
    	path = third_party/absl
    	url = git@github.com:abseil/abseil-cpp.git
    	ignore = dirty
    [submodule "third_party/jitify"]
    	path = third_party/jitify
    	url = git@github.com:NVIDIA/jitify.git
    	ignore = dirty
    

    ==注意:==此时所有的submodule均以clone,但被清除内容了,此时,只需要回去把每个仓库的changes给撤回就可以了

    第一步:

    在这里插入图片描述

    第二步:

    在这里插入图片描述

    对每个submodule都重复这样的操作,得到其内容

    然后再选择性的对未成功clone的submodule进行手动SSH clone即可,如果都clone成功了就不需要手动。

    这一步可能需要点时间,可以在编译的时候(第4步)重复进行,自己操作一下把third_party全部补全即可。

  3. 创建build目录并进入,用于编译

    mkdir build && cd build
    
  4. 执行cmake,注意提前查阅附录-使用文档-PaddlePaddle深度学习平台中的编译选项表,这里我编译的是GPU版本

    首先我们回头去安装相关依赖包中4找到之前得到的两个路径:

    PYTHON_INCLUDE_DIR:/home/liyang/anaconda3/envs/paddle/include/python3.11

    PYTHON_LIBRARY:/home/liyang/anaconda3/envs/paddle/lib/libpython3.11.so

    然后将envs及之前的路径复制下来,之后加上创建的conda环境名binpython版本构成路径DPYTHON_EXECUTABLE:/home/liyang/anaconda3/envs/paddle/bin/python.3.11

    在编译选项中填入对应路径即可

    cmake .. -DPYTHON_EXECUTABLE:FILEPATH=/home/liyang/anaconda3/envs/paddle/bin/python3.11 -DPYTHON_INCLUDE_DIR:PATH=/home/liyang/anaconda3/envs/paddle/include/python3.11 -DPYTHON_LIBRARY:FILEPATH=/home/liyang/anaconda3/envs/paddle/lib/libpython3.11.so -DWITH_GPU=ON
    

    看到下面这个,说明成功了:

    在这里插入图片描述

  5. 编译

    make -j$(nproc)
    
  6. 编译成功后进入/paddle/build/python/dist目录下找到生成的.whl包,然后在需要安装该包的conda环境下进行安装即可

    pip3 install -U xxx.whl
    

参考文档

  1. Windows10/11 三步安装wsl2 Ubuntu20.04(任意盘) - 知乎 (zhihu.com)
  2. 旧版 WSL 的手动安装步骤 | Microsoft Learn
  3. ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
  4. Ubuntu将默认python版本改为python3_ubuntu20如何将python3默认为python_早睡的叶子的博客-优快云博客
  5. 【Linux】安装CUDA 11.2 和 cuDNN 8.4.0并检查是否安装成功_linux查看cudnn是否安装成功_TangPlusHPC的博客-优快云博客
  6. gcc: error trying to exec ‘cc1plus‘: execvp: no such file or directory_gcc: error trying to exec ‘cc1plus’: execvp: no su_pan_mlpan的博客-优快云博客
  7. Linux文件 profile、bashrc、bash_profile区别 - 知乎 (zhihu.com)
  8. git提交或克隆报错fatal: unable to access ‘https://github.com/tata20191003/autowrite.git/‘: Failed to connec_fatal: unable to access 'https://github.com/whldk/_good_good_xiu的博客-优快云博客
  9. 为WSL2一键设置代理
<think>好的,用户需要查找关于在Ubuntu 22.04.4上进行Linux安装教程。首先,我要确认用户的需求是什么。他们可能是在寻找如何安装Ubuntu 22.04.4的步骤,可能是在物理机还是虚拟机上安装? 根据用户提供的引用内容,引用[2]提到了基于VMware虚拟机的安装教程,这可能是用户需要的。此外,用户还提到了Ubuntu 22.04的官方下载链接,所以需要确保教程包括下载系统和安装的步骤。 用户的问题中提到了“Ubuntu 22.04.4”,这是Ubuntu 22.04 LTS的一个点版本,通常安装步骤版本相同,但可能需要确认是否有特别需要注意的地方。不过一般来说,LTS版本安装过程是统一的,点版本主要是更新和补丁的集合,不会改变安装方法。 接下来,我需要整理安装步骤。根据引用[2],教程应该包括前期准备(硬件要求、软件下载)、虚拟机安装、创建Ubuntu虚拟机、系统安装配置、更换镜像源、设置静态IP、安装常用软件、Samba服务器和SSH配置等部分。 用户可能需要详细的步骤,尤其是作为新手,可能需要保姆教程。因此,回答应分步骤说明,参考引用中的内容,如VMware的使用、镜像源更换等。同时,需要确保用户能够正确下载系统镜像,所以官方下载链接必须包含在内。 另外,用户可能对Linux系统不熟悉,所以解释一些基本概念也是有必要的,比如什么是虚拟机、为什么选择Ubuntu等,但根据引用[2]中的结构,这些已经在教程中涵盖,因此可能需要简要提及引导用户参考详细教程。 最后,需要生成相关问题,帮助用户进一步解决可能遇到的疑问,比如性能优化、常见错误处理等。</think>### Ubuntu 22.04.4 安装教程 以下是基于虚拟机(VMware)的 Ubuntu 22.04.4 系统安装和配置的分步指南,适用于新手学习 Linux 系统编程环境搭建。 --- #### **一、前期准备** 1. **硬件要求** - 至少 4GB 内存(推荐 8GB 以上) - 20GB 以上硬盘空间 - 支持虚拟化技术的 CPU(需在 BIOS 中开启) 2. **软件下载** - **Ubuntu 22.04.4 镜像**:从[Ubuntu 官方下载页](https://cn.ubuntu.com/download/desktop)获取 ISO 文件[^1]。 - **虚拟机软件**:推荐 VMware Workstation Player(免费版)或 VirtualBox。 --- #### **二、安装虚拟机软件** 1. 下载安装 VMware Workstation Player([官网链接](https://www.vmware.com/products/workstation-player.html))。 2. 启动 VMware,点击 `创建新虚拟机`,选择 `安装程序光盘映像文件`,加载下载的 Ubuntu ISO 文件[^2]。 --- #### **三、创建 Ubuntu 虚拟机** 1. **配置虚拟机参数** - 分配内存:建议 4GB 以上。 - 硬盘空间:至少 20GB(选择 `将虚拟磁盘拆分成多个文件`)。 2. **启动虚拟机** - 进入 Ubuntu 安装界面后选择 `Install Ubuntu`。 --- #### **四、系统安装配置** 1. **语言键盘布局** - 选择中文(简体)或英文。 2. **硬盘分区** - 新手建议选择 `清除磁盘安装 Ubuntu`(自动分区)。 3. **用户设置** - 输入用户名、密码(需牢记,后续权限操作需使用)。 4. **完成安装** - 等待进度条完成后重启虚拟机。 --- #### **五、优化配置** 1. **更换国内镜像源**(加速软件下载) ```bash sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list sudo apt update ``` 2. **设置静态 IP**(可选) - 编辑网络配置文件 `/etc/netplan/*.yaml`,修改后执行 `sudo netplan apply`。 --- #### **六、安装常用工具** 1. **编译工具链** ```bash sudo apt install build-essential gcc g++ make ``` 2. **代码管理工具** ```bash sudo apt install git ``` 3. **SSH 远程登录** ```bash sudo apt install openssh-server ``` --- #### **七、验证安装** 1. 打开终端,输入 `uname -a` 查看 Linux 内核版本2. 运行 `sudo apt update` 确认软件源更新正常。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值