在此安装过程中,感谢之前的前辈写的文章,帮助我少走了很多的弯路。
最后说明,能在国内的linux发行版运行dotnet core程序,在其他的大牌linux发行版就都不是问题。

前期打算中标麒麟中级服务器版linux好的耐心消暑的啤酒百度和google

里面几点是必备的,由于在我的安装过程中,没有网上写的贴子这么两三步,一帆风顺的就布署成功了,我从开始布署到测试成功总共耗费了一个礼拜的时间,我的之前文章也可能在上次布署同样的环境,会有所不同的问题。

安装.NETCore

按照NetCore谷歌linux推荐的形式安装,只有redhat,centos,ubuntu,debian,fedora等大牌的linux发行版安装,可以看谷歌的文章来查看支持的linux和安装方法Getstartedwith.NETin10minutes,对于国外的linux发行版,没有明晰的指示。我使用是中标麒麟系统,依照的形式,类似redhat的发行版,并且依照redhat的安装方法,难以安装。所以支持采取最原始的方法来安装,压缩包安装。

采用压缩包安装方法

下载dotnet压缩包,打开dotnetlinux官网下载地址选择linuxrunapp,到写文章的时侯,目前是2.0.7版本,有个install.netcoreruntime2.0.7Package.tar.gzdownload的链接,点击下载,之后将文件复制到服务器上。

以下是我的安装步骤,上面的文件夹路径,可以安装大家自己的名子来构建,步骤如下:

在home构建NetCoreSDK文件夹,并将上步下载好的文件复制到这个文件夹中重命名文件为dotnet.tar.gz在NetCoreSDK文件夹中右键打开终端,后续输入以下:yuminstalllibunwindlibicu(安装libicu依赖,实际上会安装失败的,后续须要通过自动安装修补)mkdir-p/home/dotnet&&tarzxf/home/NetCoreSdk/dotnet.tar.gz-C/home/dotnet(此首先在home下创建一个dotnet文件夹,之后解压dotnet.tar.gz文件到home/dotnet文件中)ln-s/home/dotnet/dotnet/usr/local/bin(此命令是创建软链接的,可以促使dotnet命令注册到全局,在任何文件夹中都能辨识dotnet命令)

以上步骤,是我在参考Linux安装.Netcore环境并运行项目这篇文章,按照自己服务器的情况在做的。

之后输入dotnet--info来验证是否成功

dotnet --info

安装成功后中标linux,验证

输入dotnet--info

出现错误提示:/usr/lib/libstdc++.so.6:version`GLIBCXX_3.4.18'notfound

错误:libstdc++.so.6:version`GLIBCXX_3.4.18'notfound

缘由是系统的gcc版本太低,查询了下系统gcc的版本显示4.4.7

gcc -v

查看gcc现有的版本库,

[root@gumis02 ~]# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
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
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.3.2

中标linux_中标普华linux下载_中标麒麟linux下载

GLIBCXX_FORCE_NEW

显示没有GLIBCXX_3.4.18的库,所以我们须要升级GCC的版本。中标麒麟的linux系统的包管理不是非常好用,在网上能找到各类包安装的,如rpm包,yuninstall等等都安装不了,在中标麒麟的系统上都没有用。所以最后只能采用源代码形式来编译安装。

gcc的所有版本源代码在gun公司的gccftp上都有,最新的版本是8.1。按照我后续的经验,不要选择太高的版本国内linux主机,我选择的是5.3.0这个版本。

使用如下命令:

wget //ftp.gnu.org/gnu/gcc/gcc-5.3.0/gcc-5.3.0.tar.gz
tar -xf gcc-5.3.0.tar.gz
cd gcc-5.3.0 ./contrib/download_prerequisites 

如使用wget命令下载不了,可以用浏览器下载,之后解压是一样的。

使用./contrib/download_prerequisites会自己检查依赖的包安装,假如网路不好会下载失败,致使安装不了,须要自动下载三个依赖包。参考安装gcc。

依赖的这三个文件,download_prerequisites文件,上面写的着依赖哪些文件。

下载gmp-4.3.2.tar.bz2、mpc-0.8.1.tar.gz、mpfr-2.4.2.tar.bz2。这三个文件都可以在gccftp上找到。下好了,将三个文件复制到gcc-5.3.0文件夹中,执行以下命令:

tar -jxvf gmp-4.3.2.tar.bz2
tar -zxvf mpc-0.8.1.tar.gz
tar -jxvf mpfr-2.4.2.tar.bz2
ln -sf gmp-4.3.2 gmp
ln -sf mpc-0.8.1 mpc
ln -sf mpfr-2.4.2 mpfr

接着可以开始编译安装了:

mkdir gcc-build-6.4.0
cd gcc-build-6.4.0 ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib make j4
make install

中标麒麟linux下载_中标linux_中标普华linux下载

最后查看gcc版本验证是否成功。

[root@gumis02 ~]# gcc -v
u4f7fu7528u5185u5efa specsu3002
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/5.3.0/lto-wrapper
u76eeu6807uff1ax86_64-unknown-linux-gnu
u914du7f6eu4e3auff1a../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
u7ebfu7a0bu6a21u578buff1aposix
gcc u7248u672c 5.3.0 (GCC) [root@gumis02 ~]# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
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_3.4.20
GLIBCXX_3.4.21
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
[root@gumis02 ~]# ^C

参看以下三个链接的:

CentOS6.6升级GCCG++安装gcc4.9.0linux下安装或升级GCC4.8,以支持C++11标准

尽管看我写的文章不长,而且在安装的过程中,遇见了好多的问题,主要是对linux系统不熟悉,之后网上有好多的文章都很顺利,轻描淡写就安装成功了,我是在遇见了各类问题后,总结了自己的判定,认为前面三个文章的链接解决了大部份的东西。我安装gcc的时间用了1天半的时间,国产的linux还有好多路要走。

为何我选择了gcc5.3.0版本,其他的版本我也试过,试了三个版本(6.1.0,6.4.0,7.3.0)都没有安装成功,各有各的问题,最终选择比较紧靠4.4.7版本的时间点5.3.0版本安装成功了,其主要诱因可能是中标麒麟的linux内核版本不高,好多新的库就会编译不成功,缺乏东西。

**注意:**

安装gcc很有可能会造成你的linux系统启动不了,请谨慎。

最后验证结果,输入dotnet--info

出现新的错误提示:libc.so.6:version`GLIBC_2.14'notfound。下一步就是来解决这个错误

错误:libc.so.6:version`GLIBC_2.14'notfound

缘由是系统的glibc版本太低,软件编译时使用了较高版本的glibc引发的。

查看系统glibc支持的版本

[root@gumis02 dotnet]# strings /lib64/libc.so.6 |grep GLIBC_
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE

可以看见系统默认是2.12,须要安装更高的版本。

同样,没有办法借助rpm或yuminstall来安装,只能手工源代码的形式安装。

在安装glibc库的时侯,是十分危险的,请慎重处理,一不留神就系统运行不了。

最开始我选择了安装2.14这个版本的glibc库,并且由于在上一步中,我安装了gcc5.3.0版本,会在编译时提示gccold.所以我选择了其他的版本来安装。在安装glibc库各类版本都失败,直道选择了2.16.0这个版本才安装成功,每次安装重试都须要1到2个小时,特别的历时间:

下载glibc2.16.0源代码,没有通过wget命令来下载,用此命令仍然显示报错下载不了,然后用浏览器下载了,

须要下载两个文件:glibc-2.16.0.tar.gz和

glibc-ports-2.16.0.tar.gz.

下载好,之后执行以下命令来安装:

tar -xvf  glibc-2.16.0.tar.gz
tar -xvf glibc-ports-2.16.0.tar.gz
mv glibc-ports-2.16.0 glibc-2.16.0/ports mkdir glibc-build-2.16.0
cd glibc-build-2.16.0 ../glibc-2.16.0/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin make make install

其中在make的时侯可能会提示一个错误,LD_LIBRARY_PATH的一个错误百度网盘LINUX,缘由LD_LIBRARY_PATH系统变量的值,不能是:结尾中标linux,须要执行以下命令查看和修补

[root@gumis02 PublishOutput]# echo $LD_LIBRARY_PATH
/opt/dmdbms/bin
[root@gumis02 PublishOutput]# export LD_LIBRARY_PATH=/opt/dmdbms/bin

中标linux_中标麒麟linux下载_中标普华linux下载

[root@gumis02 PublishOutput]#

之后再执行makeinstall.

假如安装成功,看下glibc的共享库:

可以看见2.12的旧库文件还在,多了2.16版本的库文件,并且软链接文件全部指向了2.16版本

[root@gumis02 DemoNetCore]# ll /lib64/libc*
-rwxr-xr-x 1 root root 1926520 2u6708 25 2016 /lib64/libc-2.12.so
-rwxr-xr-x 1 root root 10736842 5u6708 10 10:14 /lib64/libc-2.16.so
lrwxrwxrwx. 1 root root 18 7u6708 20 2017 /lib64/libcap-ng.so.0 -> libcap-ng.so.0.0.0
-rwxr-xr-x 1 root root 21160 3u6708 6 2014 /lib64/libcap-ng.so.0.0.0
lrwxrwxrwx. 1 root root 14 7u6708 20 2017 /lib64/libcap.so.2 -> libcap.so.2.16
-rwxr-xr-x 1 root root 19016 2u6708 27 2014 /lib64/libcap.so.2.16
lrwxrwxrwx. 1 root root 19 7u6708 20 2017 /lib64/libcgroup.so.1 -> libcgroup.so.1.0.40
-rwxr-xr-x 1 root root 103096 7u6708 24 2015 /lib64/libcgroup.so.1.0.40
-rwxr-xr-x. 1 root root 197064 2u6708 25 2016 /lib64/libcidn-2.12.so
-rwxr-xr-x 1 root root 277593 5u6708 10 10:14 /lib64/libcidn-2.16.so
lrwxrwxrwx 1 root root 15 5u6708 10 10:14 /lib64/libcidn.so.1 -> libcidn-2.16.so
lrwxrwxrwx. 1 root root 17 7u6708 20 2017 /lib64/libcom_err.so.2 -> libcom_err.so.2.1
-rwxr-xr-x 1 root root 17256 7u6708 26 2015 /lib64/libcom_err.so.2.1
-rwxr-xr-x 1 root root 43392 2u6708 25 2016 /lib64/libcrypt-2.12.so
-rwxr-xr-x 1 root root 163568 5u6708 10 10:13 /lib64/libcrypt-2.16.so
lrwxrwxrwx. 1 root root 22 7u6708 20 2017 /lib64/libcryptsetup.so.1 -> libcryptsetup.so.1.1.0
-rwxr-xr-x 1 root root 97536 10u6708 20 2014 /lib64/libcryptsetup.so.1.1.0
lrwxrwxrwx 1 root root 16 5u6708 10 10:14 /lib64/libcrypt.so.1 -> libcrypt-2.16.so
lrwxrwxrwx 1 root root 12 5u6708 10 10:14 /lib64/libc.so.6 -> libc-2.16.so

上述命令参考两个网址:解决/lib64/libc.so.6:version`GLIBC_2.14'notfound和Linux/CentOS升级C基本运行库CLIBC的注意事项(当想解决GLIBC_2.x找不到的编译问题)

本文原创地址://gulass.cn/zbqlgjfwqbla.html编辑:刘遄,审核员:暂无