Ubuntu WSL 变得完全无响应

Ubuntu WSL 变得完全无响应

我正在尝试使用 Ubuntu WSL 构建 GNU GCC 9.3.0 工具链,我以为我成功做到了这一点,但后来我实际上无法在 VSCode 中将其用作工具包。然后我以为我做错了什么,并尝试删除 git repo 和编译结果,然后再次执行此操作。

我已经下载了所有依赖项(我认为),因此它完全运行了所有内容,而没有说遇到错误。但是,如果您熟悉工具链的编译,并使用 WSL 来执行此操作,我们sudo apt-get install将非常感激您提供有关应该下载什么的帮助!

我跑:

cd /mnt/c/dev
git clone git://gcc.gnu.org/git/gcc.git
git checkout releases/gcc-9.3.0
cd gcc
./configure --prefix=/mnt/c/dev/gcc-9.3 --enable-languages=c,c++
make -j20
make install

它经常会卡住,直到我重新启动才能再次运行。当它卡住时,它根本不输出任何文本,而只是显示我的输入。当我按 时Ctrl+C,它也只显示^C

我想这可能意味着它正在运行,但经过很长时间它仍然卡住。这主要发生在配置或制作期间。当它被冻结时,它会永久冻结。它的新窗口也会被冻结。任务管理器 -> 终止 -> 仍然冻结。

谢谢阅读!

编辑:通过查看添加了我已安装的内容history

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install gmp
sudo apt-get install libdevel
sudo apt install aptitude
sudo apt install libgmp-dev
sudo apt-get install libmpc-dev
sudo apt-get upgrade
sudo apt-get install lib32gcc-12-dev
apt-get install -y build-essential python3 xorriso genext2fs mtools gnu-efi git automake autoconf wget libgmp-dev libmpfr-dev libmpc-dev flex bison texinfo dosfstools
apt-get install -y build-essential python3 xorriso genext2fs mtools gnu-efi git automake autoconf wget libgmp-dev libmpfr-dev libmpc-dev flex bison texinfo dosfstools
sudo apt install libblas-dev libatlas-base-dev
sudo apt install python3-dev
sudo apt-get install libxml2-dev libxslt1-dev

我添加了那些我认为可能安装成功的。可能有些实际上不是软件包,但最多可能只有 1-2 个。

另外在 GNU gcc git 中我使用./contrib/download_prerequisites

[我运行了以下命令]

将其更改为在主目录中运行~,命令现在是;

cd ~
mkdir dev
cd dev
git clone git://gcc.gnu.org/git/gcc.git
cd gcc
git checkout releases/gcc-9.3.0
cd ..
mkdir gcc-9.3.0
cd gcc-9.3.0
./../gcc/configure --prefix=$HOME/dev/gcc-9.3.0 --enable-languages=c,c++ --disable-multilib
make -j20
make install

--disable-multilibcollect2: error: ld returned 1 exit status configure: error: I suspect your system does not have 32-bit development libraries (libc and headers). If you have them, rerun configure with --enable-multilib. If you do not have them, and want to build a 64-bit-only compiler, rerun configure with --disable-multilib.

在另一台电脑上我没有遇到这个问题,我想我下载了相同的软件包,也遇到了相同的冻结效果。所以我只是假设--disable-multilib这不是问题。

另外与冻结有些无关的是,工具链现在已下载到 中\\wsl.localhost\Ubuntu\~\dev\gcc-9.3.0\bin,但将其添加到路径后,我仍然在 VS Code 中找不到该工具包...可能是什么问题?完成后我确实收到消息,make install通知我尚未链接库,我需要使用libtool-LLIBDIR

❯ wsl -l -v

  • 名称 州 版本
  • Ubuntu 运行 2

❯ wsl --version

WSL 版本:1.2.5.0 操作系统:5.15.90.1 WSLg 版本:1.0.51 MSRDC 版本:1.2.3770 Direct3D 版本:1.608.2-61064218 DXCore 版本:10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows 版本:10.0.19045.2846

答案1

目前,它似乎就像我通过以下方式解决问题一样;

  1. 重新安装
  2. 删除所有使用 Linux 子系统路径的路径变量 ( Z:\)
  3. 使用 Powershell 和wsl命令而不是运行 Ubuntu 应用程序
  4. 安装库
  5. 移至 Linux 子系统主目录(好处:比在普通 Windows 驱动器中工作速度快得多。例如/c/dev/...:)
  6. 在那里完成整个 GCC 构建过程

该流程适用于那些想要复制或遇到相同问题的人。

  1. 重新安装

删除 Linux 子系统: https://pureinfotech.com/remove-linux-distro-wsl/

安装Linux子系统:https://learn.microsoft.com/en-us/windows/wsl/install&https://learn.microsoft.com/en-us/windows/wsl/install-manual

第二个安装链接是更新到WSL 2并将其设置为默认版本。

  1. 删除所有使用 Linux 子系统路径的路径变量 ( Z:\)

Windows -> 编辑环境变量 -> 检查用户和系统路径中是否有使用该Z:\驱动器的条目。您的子系统可能有另一个驱动器号,我相信可以通过进入资源管理器 -> “此 PC”并向下滚动来检查。

  1. 使用 Powershell 和wsl命令而不是运行 Ubuntu 应用程序

打开 Powershell 并输入wsl,然后按回车键即可在该 Powershell 实例中使用 WSL。可以通过输入 返回 Powershell exit

  1. 安装库
  2. 移至 Linux 子系统主目录(好处:比在普通 Windows 驱动器中工作速度快得多。例如/c/dev/...:)
  3. 在那里完成整个 GCC 构建过程

这一切都做了很多次,最后我为此创建了一个脚本;

将其另存为scriptName.sh,使用chmod +x /path/to/scriptName.sh来运行脚本,然后运行它。它可以从任何地方使用 来运行/path/to/scriptName.sh;如果它在当前目录中,您可以执行./scriptName.sh

#!/bin/bash

# Give permissions:
# chmod +x /path/to/scriptName.sh
# Run:
# /path/to/scriptName.sh OR cd /path/to/; ./scriptName.sh

# Download packages
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get make -y
sudo apt-get install gcc -y                 # not cross
sudo apt-get install g++ -y
sudo apt-get install make -y
sudo apt-get install bison -y
sudo apt-get install flex -y
sudo apt-get install gawk -y
sudo apt-get install libgmp-dev libgmp3-dev libgmpv4 -y
sudo apt-get install libmpfrc++-dev libmpfr-dev libmpfr-doc libmpfr4 libmpfr4-dbg -y
sudo apt-get install mpc libmpc-dev -y
sudo apt-get install texinfo -y            # optional
sudo apt-get install libcloog-isl-dev -y   # optional
sudo apt-get install build-essential -y
sudo apt-get install glibc-devel -y
sudo apt-get -y install gcc-multilib libc6-i386 -y
sudo apt-get install libz-dev -y

printf "\n\n\n\nFinished downloading packages (except for prerequisites)\n\n\n\n"

# Git repo copy and checkout

cd $HOME

mkdir dev

cd dev

printf "\n\n\n\nMoved into dev\n\n\n\n"

sudo rm -r gcc

git clone git://gcc.gnu.org/git/gcc.git

cd gcc

git checkout releases/gcc-9.3.0

printf "\n\n\n\nMoved into gcc\n\n\n\n"

# Build

./contrib/download_prerequisites

printf "\n\n\n\nFinished downloading prerequisites\n\n\n\n"

./configure                                            \
    --prefix=/usr/                                     \
    --disable-multilib                                 \
    --with-system-zlib                                 \
    --enable-languages=c,c++

make -j$(nproc)

printf "\n\n\n\nFinished make\n\n\n\n"

sudo make install -j$(nproc)

printf "\n\n\n\nFinished make install\n\n\n\n"

脚本的注意事项是,可以注释掉sudo rm -r gcc和,以大大减少执行时间。我对脚本进行了多次迭代,有时会遇到内部已经创建的内容的问题,因此,对配置等的更改有时会搞砸。也许只是我做错了,但我让它保留下来以确保它能正常工作。git clone git://gcc.gnu.org/git/gcc.git/gcc/

它没有冻结,但每次运行几个小时。它可能没有解决问题,但既然它有效,那么它现在是一个解决方案。

相关内容