如何在 CentOS 7 上正确安装 Visual Studio 代码?

如何在 CentOS 7 上正确安装 Visual Studio 代码?

我尝试过两种方法在 CentOS 7 系统上安装 Visual Studio Code。两种方法都失败了。

方法 1 - 按照官方说明进行操作(通过包管理器安装)

提供了在 CentOS 上安装 Visual Studio Code 的官方说明这里。这些说明建议通过包管理器安装,而不是下载最新稳定版本的 RPM。

如果将来说明的链接中断,我在此引用:

我们目前在 yum 存储库中提供稳定的 64 位 VS Code,以下脚本将安装密​​钥和存储库:

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc

sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'

然后更新包缓存并使用 dnf(Fedora 22 及以上版本)安装包:

dnf check-update

sudo dnf install code

或者在旧版本上使用 yum:

yum check-update

sudo yum install code

我已按照这些步骤操作,并且每个命令都成功。但是,当我code在终端中运行 Visual Studio Code 时,Visual Studio Code 窗口没有响应。

方法 2 - 从 code.visualstudio.com 下载独立 RPM 安装

我的第二种方法是code.visualstudio.com 下载页面并下载适用于 64 位 Linux 的独立 RPM。

该网站没有提供校验和来验证下载,但我检查过该文件是一个有效的 RPM:

$ file code-1.59.0-1628120127.el8.x86_64.rpm 
code-1.59.0-1628120127.el8.x86_64.rpm: RPM v3.0 bin i386/x86_64 code-1.59.0-1628120127.el8

接下来,我尝试使用 yum 进行安装,安装成功,退出代码为 0:

$ sudo yum install -y ./code-1.59.0-1628120127.el8.x86_64.rpm 
<snipped>
Installed:
  code.x86_64 0:1.59.0-1628120127.el8                                                         

Complete!
$ echo $?
0

结果

使用方法 1 和方法 2 时,当我安装后运行 Visual Studio 代码(我code从终端运行以启动程序)时,Visual Studio 代码窗口没有响应。

问题是什么

系统要求页面说 glibcxx 必须是 3.4.21 或更高版本,并且 glibc 必须是 2.15 或更高版本。

我的glibc是2.17版本,因此满足glibc的要求:

$ rpm -q glibc
glibc-2.17-324.el7_9.x86_64

当我检查我的系统时/usr/lib64/libstdc++.so.6,我发现系统上可用的最高 gllibcxx 是 3.4.19:

$ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

假设我的旧 glibcxx 版本有问题,如何在 CentOS 7 上安装 glibcxx 3.4.21 或更高版本?

答案1

libstdc++.so.6我设法从头开始构建以使 Visual Studio 代码能够运行。

请注意,我的 CentOS 7 系统的架构是 x86_64。

我大致遵循了https://gcc.gnu.org/wiki/InstallingGCClibstdc++.so.6。下面是我从 gcc 7.1.0 源代码构建时运行的命令:

sudo yum install gcc gcc-c++   # Installs gcc and g++ 4.8.5
wget http://mirrors.concertpass.com/gcc/releases/gcc-7.1.0/gcc-7.1.0.tar.gz
tar xzf gcc-7.1.0.tar.gz
cd gcc-7.1.0
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
$PWD/../gcc-7.1.0/configure --prefix=$HOME/gcc-7.1.0 --enable-languages=c,c++ --disable-multilib
make                           # I could not use -j, see details below
make install

然后我验证了libstdc++.so.6我所构建的是否有我需要的 GLIBCXX:

$ strings $HOME/gcc-7.1.0/lib64/libstdc++.so.6 | grep ^GLIBCXX_3.4... | sort
GLIBCXX_3.4.10
<snip>
GLIBCXX_3.4.21
<snip>
GLIBCXX_3.4.23

然后我将以下 bash 函数添加到我的~/.bashrc

code() (
    LD_LIBRARY_PATH="$HOME/gcc-7.1.0/lib64" /usr/bin/code "$@"
)

这个codebash 函数提供了一种方便的方法来使用该LD_LIBRARY_PATH设置运行 Visual Studio 代码,以便libstdc++.so.6在运行时找到我的。

我已经为 Visual Studio Code 添加了 yum repo,因此我不再运行这些命令,但对于其他人,这些说明可用这里

接下来我安装了 Visual Studio 代码,获取了我的源代码~/.bashrc,并从命令行运行了 Visual Studio 代码:

sudo yum install code    # Install visual studio code through yum
. ~/.bashrc              # Source my ~/.bashrc
code                     # Invoke my code bash function

这次 Visual Studio 代码启动了,我能够与窗口交互。


为什么使用 gcc 和 g++ 4.8.5 而不是 devtoolset-*?

我之前尝试使用 devtoolset-8 从源代码编译 gcc,但没有成功。也许有办法让它工作,但我知道使用通过 yum 安装的 gcc 4.8.5 进行编译确实有效。

为什么不提供-j标志来make加速编译?

当我尝试提供-jmake加快编译速度时,编译将无法找到标题(我忘记了哪一个)。

为什么要提供--disable-multilibconfigure

如果我没有向 提供该标志configure,我会收到此错误消息:

collect2: 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.

由于我的 CentOS 7 具有 x86_64 架构,因此我选择使用--disable-multilib和构建仅限 64 位的构建工件。

相关内容