文章目录

  • 安装CentOS系统
    • 安装GCC 4.8
    • 安装wget/bzip2
  • 编译安装GCC 9.2
    • 卸载GCC4.8版本
  • 编译安装Python3
    • 获取configure时的设定参数
  • 安装Libvirt的依赖包
  • 下载libvirt源代码
  • Libvirt 编译配置选项
  • 编译安装Libvirt
    • 检查Libvirt命令都链接到正确的动态库
  • 配置libvirt服务
    • 启用virtlogd服务
    • 启动virtlogd服务
    • 启用/启动virtlockd服务
    • 启用/启动libvirtd服务
    • 创建到/var/run/libvirt的软链接
    • libvirt capabilities
  • 编译安装QEMU 4.2
    • libvirt capabilities with QEMU
    • 使用QEMU
      • 启用KVM

安装CentOS系统

$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)$ uname -a
Linux centos7 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

安装GCC 4.8

这个版本的编译器不适合编译Python3.8,在编译时会产生如下的错误。我们用这个老版本编译器编译一个新的GCC 9.2版。

Could not import runpy module
Traceback (most recent call last):File "Python-3.8.1/Lib/runpy.py", line 15, in <module>import importlib.utilFile "Python-3.8.1/Lib/importlib/util.py", line 14, in <module>from contextlib import contextmanagerFile "Python-3.8.1/Lib/contextlib.py", line 4, in <module>import _collections_abc
SystemError: <built-in function compile> returned NULL without setting an error
generate-posix-vars failed
make[1]: *** [pybuilddir.txt] Error 1
make[1]: Leaving directory `Python-3.8.1'
make: *** [profile-opt] Error 2
$ sudo yum install -y gcc
$ sudo yum install -y gcc-c++$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
...
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)$ c++ --version
c++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

安装wget/bzip2

# wget用于下载源代码
$ sudo yum install -y wget# bzip2 用于解压
$ sudo yum install -y bzip2

编译安装GCC 9.2

$ wget https://ftp.gnu.org/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.xz
$ tar xvf gcc-9.2.0.tar.xz
$ cd gcc-9.2.0
$ ./contrib/download_prerequisites$ mkdir build && cd build
$ ../configure --prefix=/usr/local --disable-multilib --enable-languages=c,c++
$ make && sudo make install$ /usr/local/bin/gcc --version
gcc (GCC) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.$ /usr/local/bin/gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/9.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure --prefix=/usr/local --disable-multilib --enable-languages=c,c++
Thread model: posix
gcc version 9.2.0 (GCC)# 有些程序会调用cc,将cc软链接到gcc
$ cd /usr/local/bin
$ sudo ln -sf gcc cc
$ ls -l cc
lrwxrwxrwx. 1 root root 3 Feb 14 02:45 cc -> gcc# c++编译器版本
$ /usr/local/bin/g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/9.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure --prefix=/usr/local --disable-multilib --enable-languages=c,c++
Thread model: posix
gcc version 9.2.0 (GCC)

卸载GCC4.8版本

# 赤裸裸的新颜换旧人
$ sudo yum remove gcc

编译安装Python3

注意:gcc 4.8.5不适用于编译Python3.8,但是可以编译Python 3.7。
我们使用GCC9.2来编译Python3.8。

$ wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tar.xz
$ tar xvf Python-3.8.1.tar.xz
$ cd Python-3.8.1# 安装Python依赖的包
$ sudo yum install -y sqlite-devel tcl-devel tk-devel
$ sudo yum install -y openssl-devel
$ sudo yum install -y libcurl-devel
$ sudo yum install -y zlib zlib-devel
$ sudo yum install -y bzip2-devel
$ sudo yum install -y ncurses-devel
$ sudo yum install -y gdbm-devel
$ sudo yum install -y readline-devel
$ sudo yum --enablerepo="PowerTools" install -y bluez-libs-devel
$ sudo yum --enablerepo="PowerTools" install -y tix-devel
$ sudo yum install -y valgrind-devel
$ sudo dnf install -y libffi-devel
$ sudo dnf --enablerepo="PowerTools" install -y libnsl2-devel
$ sudo dnf install -y xz-devel# 配置Python3 编译 Makefile
$ ./configure --prefix=/usr/local --enable-optimizations --enable-shared --enable-ipv6# 编译并安装Python3
$ make && sudo make install# 检查Python版本
$ which python3
/usr/local/bin/python3# 找不到动态链接库
$ python3 --version
python3: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory# 搜索一下libpython动态库
$ find /usr/local -name "libpython3.8.so.1.0"
/usr/local/lib/libpython3.8.so.1.0# 把/usr/local/lib加到库搜索目录中
$ cd /etc/ld.so.conf.d/
$ ls
kernel-3.10.0-862.el7.x86_64.conf  mariadb-x86_64.conf  tix-x86_64.conf# 创建一个新的.conf文件,内容是/usr/local/lib目录
$ sudo su -c "echo /usr/local/lib > local_lib-x86_64.conf"$ ls
kernel-3.10.0-862.el7.x86_64.conf  local_lib-x86_64.conf  mariadb-x86_64.conf  tix-x86_64.conf$ cat local_lib-x86_64.conf
/usr/local/lib# 刷新一下库搜索路径的缓存
$ sudo ldconfig# python3可以正确执行了
$ python3 --version
Python 3.8.1# 确认正确地链接到libpython3.8.so.1.0动态库
$ cd /usr/local/bin
$ ldd python3linux-vdso.so.1 =>  (0x00007ffe533f9000)libpython3.8.so.1.0 => /usr/local/lib/libpython3.8.so.1.0 (0x00007fb1304c1000)libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fb13028a000)libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb13006e000)libdl.so.2 => /lib64/libdl.so.2 (0x00007fb12fe6a000)libutil.so.1 => /lib64/libutil.so.1 (0x00007fb12fc67000)libm.so.6 => /lib64/libm.so.6 (0x00007fb12f965000)libc.so.6 => /lib64/libc.so.6 (0x00007fb12f597000)libfreebl3.so => /lib64/libfreebl3.so (0x00007fb12f394000)/lib64/ld-linux-x86-64.so.2 (0x00007fb130ae4000)

获取configure时的设定参数

$ python3 -c "import sysconfig; print(sysconfig.get_config_var('CONFIG_ARGS'))"

'--prefix=/usr/local' '--enable-optimizations' '--enable-shared'

安装Libvirt的依赖包

从源代码编译libvirt需要安装大量依赖的包。下面这些包是成功编译完libvirt后从我的机器上列取出来的,有些包是Python3依赖的,不想细区别了。

$ sudo yum install -y apr-devel apr-util-devel atk-devel bzip2-devel cairo-devel
$ sudo yum install -y cairo-gobject-devel cyrus-sasl-devel device-mapper-devel
$ sudo yum install -y elfutils-libelf-devel expat-devel fontconfig-devel
$ sudo yum install -y freetype-devel fribidi-devel gdbm-devel gdk-pixbuf2-devel
$ sudo yum install -y glib2-devel glibc-devel gmp-devel gnutls-devel
$ sudo yum install -y gobject-introspection-devel graphite2-devel gtk2-devel
$ sudo yum install -y harfbuzz-devel httpd-devel keyutils-libs-devel krb5-devel
$ sudo yum install -y libX11-devel libXau-devel libXcomposite-devel
$ sudo yum install -y libXcursor-devel libXdamage-devel libXext-devel
$ sudo yum install -y libXfixes-devel libXft-devel libXi-devel libXinerama-devel
$ sudo yum install -y libXrandr-devel libXrender-devel libXxf86vm-devel
$ sudo yum install -y libcom_err-devel libcurl-devel libdb-devel libdrm-devel
$ sudo yum install -y libevent-devel libffi-devel libgcrypt-devel
$ sudo yum install -y libglvnd-core-devel libglvnd-devel libgpg-error-devel
$ sudo yum install -y libicu-devel libjpeg-turbo-devel libnl3-devel
$ sudo yum install -y libpciaccess-devel libpng-devel libselinux-devel
$ sudo yum install -y libsepol-devel libstdc++-devel libtasn1-devel
$ sudo yum install -y libuuid-devel libva-devel libverto-devel libvirt-devel
$ sudo yum install -y libxcb-devel libxml2-devel libxslt-devel libyaml-devel
$ sudo yum install -y mariadb-devel
$ sudo yum install -y mesa-khr-devel mesa-libEGL-devel mesa-libGL-devel
$ sudo yum install -y ncurses-devel nettle-devel numactl-devel
$ sudo yum install -y openldap-devel openssl-devel p11-kit-devel pango-devel
$ sudo yum install -y pcre-devel perl-devel pixman-devel postgresql-devel
$ sudo yum install -y python-devel readline-devel sqlite-devel
$ sudo yum install -y systemd-devel systemtap-sdt-devel
$ sudo yum install -y tcl-devel tk-devel wayland-devel
$ sudo yum install -y xorg-x11-proto-devel.noarch xz-devel yajl-devel zlib-devel# for rst2xml and rst2html command
$ sudo yum install -y python-docutils

下载libvirt源代码

$ wget https://libvirt.org/sources/libvirt-6.0.0.tar.xz
$ tar xvf libvirt-6.0.0.tar.xz
$ cd libvirt-6.0.0

Libvirt 编译配置选项

注意:libvirt编译需要Python3。

$ mkdir build && cd build
$ ../configure --prefix=/usr/local --enable-debug=yes --with-numactl
...
configure:               DTrace: yes
configure:                numad: no
configure:          Init script: systemd
configure:    Char device locks: /var/lock
configure:       Default Editor: vi
configure:         Loader/NVRAM:
configure:     virt-login-shell: yes
configure:   virt-host-validate: yes
configure:         TLS priority: NORMAL
configure:
configure: Developer Tools
configure:
configure:  wireshark_dissector: no
configure:
configure: Privileges
configure:
configure:    QEMU: root:root (!!! running QEMU as root is strongly discouraged !!!)
configure:

编译安装Libvirt

如果幸运的话,一次编译就能成功。

$ make# 在/usr/bin下创建一个/usr/local/bin/gcc的软链接
# 否则在make install的时候会失败 - 提示无法找到 gcc。
# 错误信息:
# libvirt-6.0.0/build/libtool: line 10536: gcc: command not found
# libtool:   error: error: relink 'libvirt-qemu.la' with the above command
# before installing it
# make[3]: *** [install-libLTLIBRARIES] Error 1
# make[3]: Leaving directory `libvirt-6.0.0/build/src'
# make[2]: *** [install-am] Error 2
# make[2]: Leaving directory `libvirt-6.0.0/build/src'
# make[1]: *** [install] Error 2
# make[1]: Leaving directory `libvirt-6.0.0/build/src'
# make: *** [install-recursive] Error 1
$ sudo ln -s /usr/local/bin/gcc /usr/bin/
$ sudo make install# 安装完毕后务必执行以下命令,更新动态库搜索路径, 否则libvirtd服务可能会启动失败
$ sudo ldconfig

检查Libvirt命令都链接到正确的动态库

$ ldd /usr/local/sbin/virtlogdlinux-vdso.so.1 =>  (0x00007fffae1da000)libvirt.so.0 => /usr/local/lib/libvirt.so.0 (0x00007f5951241000)libm.so.6 => /lib64/libm.so.6 (0x00007f5950f3f000)...$ ldd /usr/local/sbin/virtlockdlinux-vdso.so.1 =>  (0x00007ffe67849000)libvirt.so.0 => /usr/local/lib/libvirt.so.0 (0x00007efe9ad75000)...$ ldd /usr/local/sbin/libvirtdlinux-vdso.so.1 =>  (0x00007ffecdfef000)libvirt-lxc.so.0 => /usr/local/lib/libvirt-lxc.so.0 (0x00007f2eb2e3e000)libvirt-qemu.so.0 => /usr/local/lib/libvirt-qemu.so.0 (0x00007f2eb2c3a000)libvirt.so.0 => /usr/local/lib/libvirt.so.0 (0x00007f2eb2608000)...

配置libvirt服务

启用virtlogd服务

$ sudo systemctl enable virtlogd
Created symlink from /etc/systemd/system/sockets.target.wants/virtlogd.socket to /usr/local/lib/systemd/system/virtlogd.socket.

这个命令将virtlogd.service注册到systemd中,然后创建一个辅助的socket软链接。

启动virtlogd服务

$ sudo systemctl start virtlogd

以下内容为猜测
查看一下 virtlogd.service的unit定义文件

$ sudo systemctl cat virtlogd
# /usr/local/lib/systemd/system/virtlogd.service
[Unit]
Description=Virtual machine log manager
Requires=virtlogd.socket
Requires=virtlogd-admin.socket
...[Service]
EnvironmentFile=-/usr/local/etc/sysconfig/virtlogd
ExecStart=/usr/local/sbin/virtlogd $VIRTLOGD_ARGS
ExecReload=/bin/kill -USR1 $MAINPID
...
LimitNOFILE=16384[Install]
Also=virtlogd.socket

从这个文件中可以看出:

  1. [unit]一节的设定,virtlogd.service 服务还需要virtlogd.socket和virtlogd-admin.socket这两个辅助socket类型的unit。所以注册virtlogd.service时,同时将virtlogd.socket与virtlogd-admin.socket一起注册到systemd。
$ sudo systemctl | grep virtlogd
virtlogd.service      loaded active running   Virtual machine log manager
virtlogd-admin.socket loaded active running   Virtual machine log manager socket
virtlogd.socket       loaded active running   Virtual machine log manager socket
  1. [Install]节的设定,还需要注册并安装virtlogd.socket — systemd创建了一个软链接。注意:并没有创建到virtlogd-admin.socket的软链接;可能是因为它不在[Install]节中。
$ find /etc/systemd -name "virtlogd*" -exec ls -l {} \;
lrwxrwxrwx. 1 root root 45 Feb 14 03:41 /etc/systemd/system/sockets.target.wants/virtlogd.socket -> /usr/local/lib/systemd/system/virtlogd.socket
  1. 当virtlogd服务运行后,在/usr/local/var/run/libvirt目录会创建两个socket文件。这两个文件是由virtlogd.socket和virtlogd-admin.socket创建的。
$ ls -l /usr/local/var/run/libvirt/virtlogd*
srw-------. 1 root root 0 Feb 14 03:48 /usr/local/var/run/libvirt/virtlogd-admin-sock
srw-------. 1 root root 0 Feb 14 03:48 /usr/local/var/run/libvirt/virtlogd-sock
  1. 查看一下virtlogd-admin.socket的unit定义文件。可以看到virtlogd-admin-sock文件的位置以及关联的服务。
$ sudo systemctl cat virtlogd-admin.socket
# /usr/local/lib/systemd/system/virtlogd-admin.socket
[Unit]
Description=Virtual machine log manager socket
Before=libvirtd.service
BindsTo=virtlogd.socket
After=virtlogd.socket[Socket]
ListenStream=/usr/local/var/run/libvirt/virtlogd-admin-sock
Service=virtlogd.service
SocketMode=0600[Install]
WantedBy=sockets.target

启用/启动virtlockd服务

$ sudo systemctl enable virtlockd
Created symlink from /etc/systemd/system/sockets.target.wants/virtlockd.socket to /usr/local/lib/systemd/system/virtlockd.socket.$ sudo systemctl start virtlockd
$ sudo systemctl status virtlockd
● virtlockd.service - Virtual machine lock managerLoaded: loaded (/usr/local/lib/systemd/system/virtlockd.service; indirect; vendor preset: disabled)Active: active (running) since Fri 2020-02-14 04:15:15 EST; 5s agoDocs: man:virtlockd(8)https://libvirt.orgMain PID: 5680 (virtlockd)Tasks: 1CGroup: /system.slice/virtlockd.service└─5680 /usr/local/sbin/virtlockdFeb 14 04:15:15 centos7 systemd[1]: Started Virtual machine lock manager.

启用/启动libvirtd服务

$ sudo systemctl enable libvirtd
Created symlink from /etc/systemd/system/multi-user.target.wants/libvirtd.service to /usr/local/lib/systemd/system/libvirtd.service.
Created symlink from /etc/systemd/system/sockets.target.wants/libvirtd.socket to /usr/local/lib/systemd/system/libvirtd.socket.
Created symlink from /etc/systemd/system/sockets.target.wants/libvirtd-ro.socket to /usr/local/lib/systemd/system/libvirtd-ro.socket.$ sudo systemctl start libvirtd$ systemctl | grep libvirtd
libvirtd.service       loaded active running   Virtualization daemon
libvirtd-admin.socket  loaded active running   Libvirt admin socket
libvirtd-ro.socket     loaded active running   Libvirt local read-only socket
libvirtd.socket        loaded active running   Libvirt local socket$ pwd
/usr/local/var/run/libvirt
$ ls -l *sock
srw-------. 1 root root 0 Feb 14 04:28 libvirt-admin-sock
srw-rw-rw-. 1 root root 0 Feb 14 04:28 libvirt-sock
srw-------. 1 root root 0 Feb 14 04:15 virtlockd-admin-sock
srw-------. 1 root root 0 Feb 14 04:15 virtlockd-sock
srw-------. 1 root root 0 Feb 14 03:48 virtlogd-admin-sock
srw-------. 1 root root 0 Feb 14 03:48 virtlogd-sock

创建到/var/run/libvirt的软链接

有些程序在与libvirt通信时,似乎只会到/var/run/libvirt目录下找那些socket文件。
这样就需要在/var/run目录下创建一个到/usr/loca/var/run/libvirt目录的软链接 “欺骗”一下这些蠢程序。

$ sudo ln -s /usr/local/var/run/libvirt /var/run

libvirt capabilities

因为没有安装qemu,virsh capabilities显示不出emulator信息,此时也就不能创建虚拟机。

$ which virsh
/usr/local/bin/virsh$ virsh --version
6.0.0$ virsh capabilities
<capabilities><host><uuid>b78de1f0-ab44-4c08-9171-46bbb78f0c21</uuid><cpu><arch>x86_64</arch><model>Haswell-noTSX-IBRS</model><vendor>Intel</vendor><microcode version='37'/><counter name='tsc' frequency='3499997000'/><topology sockets='1' cores='4' threads='1'/><feature name='vme'/>...<feature name='invtsc'/><pages unit='KiB' size='4'/><pages unit='KiB' size='2048'/><pages unit='KiB' size='1048576'/></cpu><power_management/><iommu support='no'/><migration_features><live/><uri_transports><uri_transport>tcp</uri_transport><uri_transport>rdma</uri_transport></uri_transports></migration_features><topology><cells num='1'><cell id='0'><memory unit='KiB'>12713396</memory><pages unit='KiB' size='4'>3178349</pages><pages unit='KiB' size='2048'>0</pages><pages unit='KiB' size='1048576'>0</pages><distances><sibling id='0' value='10'/></distances><cpus num='4'><cpu id='0' socket_id='0' core_id='0' siblings='0'/><cpu id='1' socket_id='0' core_id='1' siblings='1'/><cpu id='2' socket_id='0' core_id='2' siblings='2'/><cpu id='3' socket_id='0' core_id='3' siblings='3'/></cpus></cell></cells></topology><cache><bank id='0' level='3' type='both' size='8' unit='MiB' cpus='0-3'/></cache><secmodel><model>selinux</model><doi>0</doi><baselabel type='kvm'>system_u:system_r:svirt_t:s0</baselabel><baselabel type='qemu'>system_u:system_r:svirt_tcg_t:s0</baselabel></secmodel></host></capabilities>

编译安装QEMU 4.2

# Install dependent packages
$ sudo yum install -y gtk3-devel
$ sudo yum install -y spice-server spice-protocol spice-server-devel$ wget https://download.qemu.org/qemu-4.2.0.tar.xz
$ tar xvf qemu-4.2.0.tar.xz
$ cd qemu-4.2.0
$ mkdir build && cd build
$ CC=gcc ../configure --prefix=/usr/local --target-list=x86_64-softmmu --enable-vnc --enable-gtk --enable-kvm --enable-numa --enable-tools --enable-spice
$ make && sudo make install$ which qemu-system-x86_64
/usr/local/bin/qemu-system-x86_64$ qemu-system-x86_64 --version
QEMU emulator version 4.2.0
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers

libvirt capabilities with QEMU

$ sudo /usr/local/bin/virsh capabilities | grep emulator<emulator>/usr/local/bin/qemu-system-alpha</emulator><emulator>/usr/local/bin/qemu-system-arm</emulator><emulator>/usr/local/bin/qemu-system-arm</emulator><emulator>/usr/local/bin/qemu-system-aarch64</emulator><emulator>/usr/local/bin/qemu-system-cris</emulator><emulator>/usr/local/bin/qemu-system-i386</emulator><emulator>/usr/local/bin/qemu-system-lm32</emulator><emulator>/usr/local/bin/qemu-system-m68k</emulator><emulator>/usr/local/bin/qemu-system-microblaze</emulator><emulator>/usr/local/bin/qemu-system-microblazeel</emulator><emulator>/usr/local/bin/qemu-system-ppc</emulator><emulator>/usr/local/bin/qemu-system-ppc64</emulator><emulator>/usr/local/bin/qemu-system-ppc64</emulator><emulator>/usr/local/bin/qemu-system-riscv32</emulator><emulator>/usr/local/bin/qemu-system-riscv64</emulator><emulator>/usr/local/bin/qemu-system-s390x</emulator><emulator>/usr/local/bin/qemu-system-sh4</emulator><emulator>/usr/local/bin/qemu-system-sh4eb</emulator><emulator>/usr/local/bin/qemu-system-sparc</emulator><emulator>/usr/local/bin/qemu-system-sparc64</emulator><emulator>/usr/local/bin/qemu-system-unicore32</emulator><emulator>/usr/local/bin/qemu-system-x86_64</emulator><emulator>/usr/local/bin/qemu-system-xtensa</emulator><emulator>/usr/local/bin/qemu-system-xtensaeb</emulator>

使用QEMU

# 下载cirros image文件
$ wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
$ qemu-system-x86_64 ./cirros-0.4.0-x86_64-disk.img
VNC server running on ::1:5900
$ vncviewer localhost:0

启用KVM

执行qemu-system-x86_64命令时,加上-enable-kvm可以启用KVM。

# 如果这个命令失败,提示 权限不足(permission denied),参看下注。
$ qemu-system-x86_64 -enable-kvm ./cirros-0.4.0-x86_64-disk.img
VNC server running on ::1:5900

注:可以检查 /dev/kvm的文件权限设置,并将其改成666(此时没有考虑安全性)

$ ls -l /dev/kvm
crw-------+ 1 root root 10, 232 Feb 21 00:01 /dev/kvm$ sudo chmod 666 /dev/kvm$ ls -l /dev/kvm
crw-rw-rw-+ 1 root root 10, 232 Feb 21 00:01 /dev/kvm

在VNC控制台中,键入<CTRL+ALT>+2,可以切换到QEMU命令行窗口,输入info kvm可以看到 kvm support: enabled,说明已经启用KVM了。

GCC9.2/Python3.8/Libvirt6.0/QEMU4.2 编译/配置/安装相关推荐

  1. Atlas 2.2.0源码编译及安装步骤

    Atlas 2.2.0源码编译及安装步骤 一.源码编译 1. 下载源码 2. 前置环境安装 3. 修改版本号 4. 修改源码中 atlas与kafka版本兼容问题 5. 开始编译 6. 问题锦集 二. ...

  2. 作为一个小白的Python3 Pycharm Anaconda3 Cuda Cudnn的环境配置安装和pip下载安装tensorflow

    win10系统 链接:https://pan.baidu.com/s/1XHWpPNsyNub8qu3X6JiBhQ 提取码:4oc9 这是我的环境配置安装包,还有一个py文件是检测你是否安装好的了! ...

  3. Greenplum【集群搭建 01】局域网 CentOS 7.9.2009 环境 GreenPlum 6.13.0 集群规划+配置+安装+内核参数调整(应用实例分享)

    1.部署环境 局域网已配置ip.ntp时间同步.yum源,服务器版本为CentOS Linux release 7.9.2009 (Core),安装文件为greenplum-db-6.13.0-rhe ...

  4. 【ubuntu+opencv3】ubuntu16.04+qt5+opencv3.2.0编译与安装

    在网上找了很多资料,终于把opencv3.2.0在ubuntu16.04下安装成功了,由于使用qt作为开发工具,这里也顺便介绍下qt的安装与配置. 1.依赖库的安装 执行如下命令: sudo apt- ...

  5. pytorch 安装 pip+windows10+python3.6+CUDA10.0

    pytorch 安装 pip+windows10+python3.6+CUDA10.0 进入官网 点击: install previous versions of PyTorch 进入安装网址,选择合 ...

  6. linux gcc-9.2.0 源码编译

    目录 下载gcc-9.2.0源码 解压源码包 下载依赖 创建编译输出目录 编译配置信息 编译 安装 清理 查看GLIBCXX的版本 验证 下载gcc-9.2.0源码 http://ftp.gnu.or ...

  7. CentOS6.9下手动编译并安装Python3.7.0

    CentOS6.9默认安装的python版本为2.6.6,若想安装python3以上版本,只能手工编译安装 下面介绍Python-3.7.0版本的手动编译并安装的步骤 1.下载Python-3.7.0 ...

  8. opencvpython 段力辉是哪本书_OpenCV基础 | 1.python3.6+OpenCV4.0环境配置

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨小郭学数据 源自丨快学python(ID:kx ...

  9. windows10+python3.5+CUDA10.0 安装pytorch教程

    安装环境准备: 1.首先你需要安装Anaconda: https://www.anaconda.com/ 需要注意Anaconda自带的python版本.我安装的Anaconda自带的是python3 ...

最新文章

  1. 如何设置Java Spring Boot JWT授权和认证
  2. 数据结构: 排序算法介绍
  3. 科大星云诗社动态20210312
  4. shell 数学运算
  5. Bootstrap组件_导航条(默认样式的导航条,品牌)
  6. 2021年12月2日星期四的 Hybris Eclipse 导入尝试
  7. Nature | 基于单细胞RNA测序绘制人类肺组织分子细胞图谱,成功鉴定多种未知细胞类型...
  8. 云服务器一般选什么系统,云服务器一般选择什么系统好
  9. 明略数据(现在)是一家怎样的公司?
  10. matlab m文件开方,请问,在matlab里面如果输入开方号(根号)?如9的开方怎么写?
  11. camera - YUV422
  12. 智能手机TFT-LCD显示驱动芯片行业现状调研及趋势分析报告
  13. 自抗扰控制(ADRC)—— 一阶系统
  14. 初探一个0代码开发—iVX平台
  15. UI设计新手该怎么求职 有没有UI面试必备攻略
  16. 目标管理之SMART法则
  17. Android 360全景视频播放。
  18. Win10系统提升开机速度方法
  19. 智能指针的标准之争:Boost vs. Loki (转)
  20. ICPC North Western European Regional Contest 2019 E. Expeditious Cubing(浮点数处理)

热门文章

  1. Extra }, or forgotten endgroup. [ maketitlepage]问题的解决(uline命令)
  2. imovie打开视频卡死解决办法
  3. 数字图像处理 空间域平滑 MATLAB实验
  4. git pull提示remote error:CAPTCHA required
  5. 问题解决:java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date
  6. python3 循环语句 for语句和while语句
  7. ES6语法---let和var的不同
  8. vue_过滤器_note
  9. 设置按峰值带宽计费_云平台界面优化升级!VPC网络包年包月计费调整!
  10. mysql自带客户端连接服务器,客户端连接mysql服务器的指令 mysql -u root -p 详细讲解及使用实例...