中标麒麟桌面版V6.0部署应用和gcc升级总结

前言

       由于公司项目的需求,需要在中标麒麟上部署我们监控平台应用,以满足市场所谓的国产自主安全操作系统开展业务的需求。

       由于原项目在Debian8.7桌面系统上开发,项目准备在中标麒麟桌面系统上试试水,预计直接运行在中标麒麟中会遇到不少问题。因此,将部署过程记录下来,以供后续工作参考。

安装中标麒麟操作系统

       在中标麒麟官网(http://www.cs2c.com.cn/index.php?id=177)上登记了自己信息,准备申请一个个人试用版的中标麒麟桌面系统,等到将来测试成功了,再购买标准版的系统商用。登记了快一个月了,无人应答!唉,算了,人家看不上我们这种中小企业的民用市场。于是,上网搜索到一个连接https://www.7down.com/soft/285010.html,到他指定网盘下载,说是8.0,实际上安装才知道是6.0,算了,有总比没有好!

       我把系统安装在虚拟机中,安装过程基本上与安装别的linux没啥差异,一路绿灯,就不提了。关键是后续的设置与部署跳坑,下文分解。

       看看这款神奇操作系统的用户界面:

 

中标麒麟桌面版V6.0部署应用和gcc升级总结_第1张图片

 

 root用户登录麒麟系统

跟ubuntu、debian一样,默认情况下都是不允许root登陆图形界面的。因此,第一步先打开root登陆的权限。

1、打开终端,输入 su -,然后输入root密码进入root权限

2、使用vim打开 /etc/pam.d/gdm 和 /etc/pam.d/gdm-password文件,将两个文件中的  

auth required pam_succeed_if.so user != root quiet 注释掉就行(此行最前边加#即可),实际操作中,发现gdm这个文件没有,不用管了。

3、注销,然后使用root用户登录图形界面,成功!

 

麒麟系统更换官方源

       遇到的第一个坑,运行 yum update 无法连接上源。

安装iso里的更新源竟然不是官方的,或者说配错了。上网搜索了一下官方源,改掉!

vi /etc/yum.repos.d/neokylin.repo

baseurl改为:http://download.cs2c.com.cn/neokylin/desktop/releases/6.0/i386/os/

同理

vi /etc/yum.repos.d/neokylin-updates.repo

baseurl改为:http://download.cs2c.com.cn/neokylin/desktop/updates/6.0/i386/os/

 

yum update  或者

yum update --skip-broken   //使用后者是因为报错,好像也没卵用

 

 

升级gcc到4.9.2

直接运行我们之前在debian8.7上编译的后台程序,发现报错:

/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found

于是查看动态库:

strings /usr/lib/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

GLIBC_2.3

GLIBC_2.0

GLIBC_2.4

GLIBC_2.1

GLIBC_2.1.3

GLIBC_2.3.2

GLIBC_2.2

GLIBCXX_DEBUG_MESSAGE_LENGTH

确实没有GLIBCXX_3.4.20

 

上网搜索了一下gcc版本与libstdc++.so的关系:

GCC 4.9.0: libstdc++.so.6.0.20

GCC 5.1.0: libstdc++.so.6.0.21

GCC 6.1.0: libstdc++.so.6.0.22

GCC 7.1.0: libstdc++.so.6.0.23

GCC 7.2.0: libstdc++.so.6.0.24

GCC 8.0.0: libstdc++.so.6.0.25

 

至少要升级到4.9.0,我们的程序是在4.9.2的debian8.7默认编译器,因此只能升级gcc。

 

升级gcc操作

首先:

从官方源升级下gcc,看能不能直接到gcc-4.9.0以上,

yum install gcc

一番更新之后,发现gcc由4.7.1变成了4.8.1,还是没有达到4.9的要求。

于是决定下载源码进行编译安装。

 

一、源码编译安装gcc-4.9.2

 

1、下载gcc源码包

 

Download (HTTP): http://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz

 

2、解压压缩包

 

[root@localhost tmp]# cd /usr/local/

[root@localhost local]# tar -zxvf gcc-4.9.2.tar.gz

3、下载编译所需的依赖包

 

[root@localhost local]# cd gcc-4.9.2

[root@localhost gcc-4.9.2]# ./contrib/download_prerequisites    

如果虚拟机不能联网,只能手工下载了。参考./contrib/download_prerequisites脚本里面的内容,一步步操作。

 

4、编译:

./configure --prefix=/usr/local/gcc  --enable-bootstrap  --enable-checking=release --enable-languages=c,c++ --disable-multili

make -j4

make install

 

make过程中报错:

configure: error: no usable dependency style found

make[2]: *** [configure-stage1-gcc] 错误 1

make[2]: 离开目录“/usr/local/gcc-4.9.2”

make[1]: *** [stage1-bubble] 错误 2

make[1]: 离开目录“/usr/local/gcc-4.9.2”

make: *** [all] 错误 2

 

查看config.log

gcc version 4.8.1 20130603 (NeoKylin 4.8.1-1) (GCC)

configure:4249: $? = 0

configure:4238: gcc -V >&5

gcc: error: unrecognized command line option '-V'

gcc: fatal error: no input files

compilation terminated.

configure:4249: $? = 4

configure:4238: gcc -qversion >&5

gcc: error: unrecognized command line option '-qversion'

gcc: fatal error: no input files

 

搜索了以上信息,可能与autoconf和binutils库太旧了有关,于是继续把网上收集来的需要安装的包都给装上,如下:

yum install -y  gcc-c++  glibc-static //为避免出错建议安装此包

yum install autoconf

yum install binutils

 

再次编译,出现了长长跑马,静待编译完成。

[root@localhost gcc]# /usr/local/gcc/bin/gcc -v

使用内建 specs。

COLLECT_GCC=/usr/local/gcc/bin/gcc

COLLECT_LTO_WRAPPER=/usr/local/gcc/libexec/gcc/i686-pc-linux-gnu/4.9.2/lto-wrapper

目标:i686-pc-linux-gnu

配置为:./configure --prefix=/usr/local/gcc --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --disable-multilibls

线程模型:posix

gcc 版本 4.9.2 (GCC)

 

编译成功了。

 

#strings /usr/local/gcc/lib/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

GLIBC_2.3

GLIBC_2.0

GLIBC_2.1

GLIBC_2.17

GLIBC_2.1.3

GLIBC_2.3.2

GLIBC_2.2

GLIBCXX_DEBUG_MESSAGE_LENGTH

终于看到GLIBCXX_3.4.20

 

加入到PATH环境变量中:

[root@localhost gcc-build]# gcc --version

gcc (GCC) 4.8.1 20130603 (NeoKylin 4.8.1-1)

Copyright © 2013 Free Software Foundation, Inc.

本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;

包括没有适销性和某一专用目的下的适用性担保。

[root@localhost gcc-build]# vi /etc/profile.d/gcc.sh

export PATH=/usr/local/gcc/bin:$PATH

[root@localhost gcc-build]# source /etc/profile.d/gcc.sh

[root@localhost gcc-build]# gcc --version

gcc (GCC) 4.9.2

Copyright © 2014 Free Software Foundation, Inc.

本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;

包括没有适销性和某一专用目的下的适用性担保。

 

导出头文件:

[root@localhost gcc-4.9.2]# ln -sv /usr/local/gcc/include/ /usr/include/gcc
"/usr/include/gcc" -> "/usr/local/gcc/include/"

导出库:

[root@localhost gcc-4.9.2]# vim /etc/ld.so.conf.d/gcc.conf
/usr/local/gcc/lib
[root@localhost gcc-4.9.2]# ldconfig -v
[root@localhost gcc-4.9.2]# ldconfig -p |grep gcc  //验证是否导出 
至此,gcc升级到4.9.2成功。
此时,跑之前的应用程序,启动正常!

你可能感兴趣的:(知识点与应用技巧)