由于ubuntu 12.04版本太旧,官方已经不支持,在可使用范围内,可替换为官方的旧版本存档源
# 先备份原有的数据
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
替换成以下内容
deb <http://old-releases.ubuntu.com/ubuntu> precise main restricted universe multiverse
deb <http://old-releases.ubuntu.com/ubuntu> precise-updates main restricted universe multiverse
deb <http://old-releases.ubuntu.com/ubuntu> precise-security main restricted universe multiverse
安装pyenv方便python版本管理,ubuntu12.04系统自带的curl
和OpenSSL
版本过旧,导致无法使用官方的推荐安装方法安装,只能手动安装
cd ~
wget <https://www.openssl.org/source/openssl-1.1.1q.tar.gz>
tar -xzf openssl-1.1.1q.tar.gz
cd openssl-1.1.1q
sudo ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared
sudo make
sudo make install
ubuntu12.04系统自带的版本为gcc4.6,但是onnxruntime所需的gcc最低为8.x版本,所以需要升级
sudo apt-get update
sudo apt-get install -y build-essential libgmp-dev libmpfr-dev libmpc-dev zlib1g-dev
cd ~
wget <https://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.gz>
tar -xzvf gcc-11.1.0.tar.gz
cd gcc-11.1.0
./contrib/download_prerequisites
执行到./contrib/download_prerequisites时可能会报错
root@ubuntu:~/gcc-11.2.0# ./contrib/download_prerequisites
ERROR: cannot verify gcc.gnu.org's certificate, issued by /C=US/O=Let\\'s Encrypt/CN=R10': Unable to locally verify the issuer's authority. To connect to gcc.gnu.org insecurely, use --no-check-certificate'.
error: Cannot download gmp-6.1.0.tar.bz2 from <http://gcc.gnu.org/pub/gcc/infrastructure/>
解决方法是手动下载依赖
cd ~/gcc-11.2.0
wget --no-check-certificate <https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2>
wget --no-check-certificate <https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.6.tar.bz2>
wget --no-check-certificate <https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz>
wget --no-check-certificate <https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2>
tar -xjf gmp-6.1.0.tar.bz2
ln -s gmp-6.1.0 gmp
tar -xjf mpfr-3.1.6.tar.bz2
ln -s mpfr-3.1.6 mpfr
tar -xzf mpc-1.0.3.tar.gz
ln -s mpc-1.0.3 mpc
tar -xjf isl-0.18.tar.bz2
ln -s isl-0.18 isl
执行完没有问题后继续编译
mkdir build
cd build
../configure --prefix=/usr/local/gcc-11.2 --enable-languages=c,c++ --disable-multilib
make -j$(nproc)
sudo make install
添加gcc到环境变量中,然后检查版本
echo 'export PATH=/usr/local/gcc-11.2/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/gcc-11.2/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
gcc --version