建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
鲲鹏论坛 主题:8003帖子:270353

【技术干货】

zeroC_ICE3.4.2_银河麒麟Kylin V10 B06-软件移植指导书

银河护卫队... 2020/10/9 1868

1       软件介绍

本指导主要针对Kylin 10系统ICE3.4.2版本C++编译。ZeroC ICE 是指ZeroC公司的ICEInternet Communications Engine)中间件平台。具体信息请参见官网:https://zeroc.com

版本:ICE3.4.2

2       预置条件

服务器型号:TaiShan 2280

OSKylin Linux Advanced Server V10

内核:4.19.90

 

3       配置本地yum

3.1       配置步骤

步骤1 将操作系统镜像文件/Kylin-Server-10-Release-Build06.12.04-lic-zj-20200620-arm64.iso文件拷贝服务器的“/ root”目录下。

步骤2 镜像文件挂载。

1. 将“/root”目录下的操作系统对应iso文件挂载到“/mnt”目录下。

mount /root/Kylin-Server-10-Release-Build06.12.04-lic-zj-20200620-arm64.iso /mnt

说明:该操作单次生效,重启后失效。

步骤3 添加本地源文件。

1. 进入“/etc/yum.repos.d”目录。

cd /etc/yum.repos.d

说明:如果不能联网,请将此目录下的*.repo文件移到任意其他备份目录下。

2. 创建local.repo文件。

a. 打开local.repo文件。

vi local.repo

b. 编辑local.repo文件,在local.repo文件中添加如下内容:

[local]

name=local.repo

baseurl=file:///mnt

enabled=1

gpgcheck=0

c. 保存并退出local.repo文件。

步骤4 生效本地源。

yum clean all

yum makecache

yum list

3.2       安装相关rpm

 

执行 yum -y install patch 命令安装patch 命令包。

yum -y install patch

执行如下命令安装、升级gcc包。

yum -y update gcc

yum -y install gcc+ gcc-c++

4       下载安装包

4.1       ICE v3.4.2

下载地址:https://zeroc.com/download/Ice/3.4/Ice-3.4.2.tar.gz


5       依赖包下载安装

5.1       下载说明

从官网说明(https://zeroc.com/downloads/archive/ice/3.4.2/)编译源码包需要第三方依赖包。

从依赖包里的README帮助指南可以找到安装指导。

image.png

安装依赖包尽量安装在相同的目录,同时为了避免系统中已经安装了不同版本的依赖包,在安装ICE依赖的时候安装在/usr/local或者其他指定目录下以免影响系统自带的软件。推荐在普通用户下进行编译安装。

5.2       下载链接

依赖包下载地址

https://zeroc.com/download/Ice/3.4/ThirdParty-Sources-3.4.2.tar.gz

image.png

内含如下需要的依赖包:

bzip2-1.0.6.tar.gz、db-4.8.30.NC.tar.gz、expat-2.0.1.tar.gz(此包会导致银河麒麟系统重启后黑屏,无法进系统问题,用系统自带的expat-2.1.0版本)、mcpp-2.7.2.tar.gz、openssl-0.9.8r.tar.gz和mcpp补丁。

 

5.3       安装

5.3.1      安装bzip2

bzip2默认安装在/usr/local

tar -zxf bzip2-1.0.6.tar.gz

cd bzip2-1.0.6/

vim Makefile 编译工具加上-fPIC编译参数

image.png

make && sudo make install

5.3.2      安装expat

 银河麒麟V10版本系统自带有expat2.1.0版本。用yum install expat-devel.aarch64命令来安装

image.png

5.3.3      安装Berkeley DB 4.8.30

tar -zxf db-4.8.30.NC.tar.gz

cd db-4.8.30.NC/build_unix/

../dist/configure --prefix=/usr/local --enable-cxx --build=arm-linux

make && sudo make install

5.3.4      安装mcpp

tar -zxf mcpp-2.7.2.tar.gz 

cd mcpp-2.7.2 

patch -p0 < ../mcpp/patch.mcpp.2.7.2 

./configure CFLAGS=-fPIC --prefix=/usr/local --enable-mcpplib --disable-shared --build=arm-linux

make && sudo make install

5.3.5      安装openssl 0.9.8

tar -zxf openssl-0.9.8r.tar.gz

cd openssl-0.9.8r/

./config --prefix=/usr/local --openssldir=/usr/local/openssl shared

make && sudo make install

安装完成之后将libssl.so的路径/usr/local/lib加到系统中:

sudo vim /etc/ld.so.conf 加上

image.png

ldconfig

6       编译安装

6.1       ICE3.4.2编译安装

tar -zxf Ice-3.4.2.tar.gz

cd Ice-3.4.2/cpp/

vim include/IceUtil/Config.h 加上ARM平台系统变量__aarch64__

image.png

 

    defined(__ARMEL__) || defined(_M_ARM_FP)   || \

    defined(__MIPSEL__) ||   defined(__aarch64__)|| (defined(__BYTE_ORDER) && (__BYTE_ORDER ==   __LITTLE_ENDIAN))

 

vim config/Make.rules 修改依赖包安装路径

image.png

使用如下命令编译,如果编译报错请参考常见问题排查。

make

编译结果如下

image.png

使用如下命令安装

make install

安装结果如下

image.png

7       常见问题

7.1       检查参数问题

在源码编译过程中遇到config.guess 检查系统参数有问题就用/usr/share/automake-1.14/config.guess 替换源码包中的config.guess文件。

7.2       error "Unknown architecture"

image.png

参考6.1修改平台系统变量

defined(__ARMEL__) || defined(_M_ARM_FP) || \

defined(__MIPSEL__) || defined(__aarch64__)|| (defined(__BYTE_ORDER) && (__BYTE_ORDER == __LITTLE_ENDIAN))

 

image.png

7.3       c++: Command not found

image.png

yum -y update gcc

yum -y install gcc+ gcc-c++

7.4       error: cannot guess build type; you must specify one

image.png

 

解决方法:指定平台

./configure --prefix=/usr/local  --build=arm-linux

7.5       patch: command not found.


 image.png

没有安装 patch 命令包,执行 yum -y install patch 安装即可

7.6       POD document had syntax errors at /bin/pod2man

编译安装openssl-0.9.8报错

image.png

 

解决方法:

mv /usr/bin/pod2man /tmp/

重新编译安装即可。

 

7.7       ‘::**’ has not been declared

 

编译ice报错

image.png

从日志看是FileUtil.cpp文件异常,使用find命令找到该文件具体位置并按如下方式修改,

image.png

find ./ -name FileUtil.cpp

vim ./src/IceUtil/FileUtil.cpp

增加#include <unistd.h>

image.png

 

如果是FileTracker.cpp等文件提示类似错误,按同样方法修改即可。

vim ./src/Slice/FileTracker.cpp

增加#include <unistd.h>

image.png

 

 

7.8       error: ‘upCast’ was not declared in this scope, and no declarations were found

 

编译ice报错

 

../../include/Ice/Handle.h:106:30: error: ‘upCast’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

image.png

 

源码bug,需下载补丁修复

 

补丁下载:

https://forums.zeroc.com/discussion/5799/patch-for-compiling-ice-with-clang-and-gcc4-7

 

image.png

 

下载后的名字是949.txt,将949.txt上传到服务器上并在Ice-3.4.2目录下执行如下命令加载补丁。

patch -p0 < ../949.txt

 

image.png

image.png

 

7.9       error: ‘ptrdiff_t’ does not name a type

 image.png 

 

image.png

 

vim ./include/Ice/Buffer.h

#include <cstddef>

image.png

 

7.10   error: ‘close’ was not declared in this scope

 image.png


vim ./src/IceGrid/Client.cpp

#include <unistd.h>

image.png

 

如果还报错,继续根据报错提示修改。

image.png

回复5

2020/10/10 14:13


0 0
2020/10/11 22:00

    

火灵
0 0
2020/10/18 19:52

赞!

2020/10/28 23:59

想请教一下 这个迁移指导是不是在centos下也能参考呢

2020/10/29 10:14

感谢分享

上划加载中
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复
更新于2020年10月09日 17:16:00 1868 5
直达本楼层的链接
楼主
显示全部楼层
[技术干货] zeroC_ICE3.4.2_银河麒麟Kylin V10 B06-软件移植指导书

1       软件介绍

本指导主要针对Kylin 10系统ICE3.4.2版本C++编译。ZeroC ICE 是指ZeroC公司的ICEInternet Communications Engine)中间件平台。具体信息请参见官网:https://zeroc.com

版本:ICE3.4.2

2       预置条件

服务器型号:TaiShan 2280

OSKylin Linux Advanced Server V10

内核:4.19.90

 

3       配置本地yum

3.1       配置步骤

步骤1 将操作系统镜像文件/Kylin-Server-10-Release-Build06.12.04-lic-zj-20200620-arm64.iso文件拷贝服务器的“/ root”目录下。

步骤2 镜像文件挂载。

1. 将“/root”目录下的操作系统对应iso文件挂载到“/mnt”目录下。

mount /root/Kylin-Server-10-Release-Build06.12.04-lic-zj-20200620-arm64.iso /mnt

说明:该操作单次生效,重启后失效。

步骤3 添加本地源文件。

1. 进入“/etc/yum.repos.d”目录。

cd /etc/yum.repos.d

说明:如果不能联网,请将此目录下的*.repo文件移到任意其他备份目录下。

2. 创建local.repo文件。

a. 打开local.repo文件。

vi local.repo

b. 编辑local.repo文件,在local.repo文件中添加如下内容:

[local]

name=local.repo

baseurl=file:///mnt

enabled=1

gpgcheck=0

c. 保存并退出local.repo文件。

步骤4 生效本地源。

yum clean all

yum makecache

yum list

3.2       安装相关rpm

 

执行 yum -y install patch 命令安装patch 命令包。

yum -y install patch

执行如下命令安装、升级gcc包。

yum -y update gcc

yum -y install gcc+ gcc-c++

4       下载安装包

4.1       ICE v3.4.2

下载地址:https://zeroc.com/download/Ice/3.4/Ice-3.4.2.tar.gz


5       依赖包下载安装

5.1       下载说明

从官网说明(https://zeroc.com/downloads/archive/ice/3.4.2/)编译源码包需要第三方依赖包。

从依赖包里的README帮助指南可以找到安装指导。

image.png

安装依赖包尽量安装在相同的目录,同时为了避免系统中已经安装了不同版本的依赖包,在安装ICE依赖的时候安装在/usr/local或者其他指定目录下以免影响系统自带的软件。推荐在普通用户下进行编译安装。

5.2       下载链接

依赖包下载地址

https://zeroc.com/download/Ice/3.4/ThirdParty-Sources-3.4.2.tar.gz

image.png

内含如下需要的依赖包:

bzip2-1.0.6.tar.gz、db-4.8.30.NC.tar.gz、expat-2.0.1.tar.gz(此包会导致银河麒麟系统重启后黑屏,无法进系统问题,用系统自带的expat-2.1.0版本)、mcpp-2.7.2.tar.gz、openssl-0.9.8r.tar.gz和mcpp补丁。

 

5.3       安装

5.3.1      安装bzip2

bzip2默认安装在/usr/local

tar -zxf bzip2-1.0.6.tar.gz

cd bzip2-1.0.6/

vim Makefile 编译工具加上-fPIC编译参数

image.png

make && sudo make install

5.3.2      安装expat

 银河麒麟V10版本系统自带有expat2.1.0版本。用yum install expat-devel.aarch64命令来安装

image.png

5.3.3      安装Berkeley DB 4.8.30

tar -zxf db-4.8.30.NC.tar.gz

cd db-4.8.30.NC/build_unix/

../dist/configure --prefix=/usr/local --enable-cxx --build=arm-linux

make && sudo make install

5.3.4      安装mcpp

tar -zxf mcpp-2.7.2.tar.gz 

cd mcpp-2.7.2 

patch -p0 < ../mcpp/patch.mcpp.2.7.2 

./configure CFLAGS=-fPIC --prefix=/usr/local --enable-mcpplib --disable-shared --build=arm-linux

make && sudo make install

5.3.5      安装openssl 0.9.8

tar -zxf openssl-0.9.8r.tar.gz

cd openssl-0.9.8r/

./config --prefix=/usr/local --openssldir=/usr/local/openssl shared

make && sudo make install

安装完成之后将libssl.so的路径/usr/local/lib加到系统中:

sudo vim /etc/ld.so.conf 加上

image.png

ldconfig

6       编译安装

6.1       ICE3.4.2编译安装

tar -zxf Ice-3.4.2.tar.gz

cd Ice-3.4.2/cpp/

vim include/IceUtil/Config.h 加上ARM平台系统变量__aarch64__

image.png

 

    defined(__ARMEL__) || defined(_M_ARM_FP)   || \

    defined(__MIPSEL__) ||   defined(__aarch64__)|| (defined(__BYTE_ORDER) && (__BYTE_ORDER ==   __LITTLE_ENDIAN))

 

vim config/Make.rules 修改依赖包安装路径

image.png

使用如下命令编译,如果编译报错请参考常见问题排查。

make

编译结果如下

image.png

使用如下命令安装

make install

安装结果如下

image.png

7       常见问题

7.1       检查参数问题

在源码编译过程中遇到config.guess 检查系统参数有问题就用/usr/share/automake-1.14/config.guess 替换源码包中的config.guess文件。

7.2       error "Unknown architecture"

image.png

参考6.1修改平台系统变量

defined(__ARMEL__) || defined(_M_ARM_FP) || \

defined(__MIPSEL__) || defined(__aarch64__)|| (defined(__BYTE_ORDER) && (__BYTE_ORDER == __LITTLE_ENDIAN))

 

image.png

7.3       c++: Command not found

image.png

yum -y update gcc

yum -y install gcc+ gcc-c++

7.4       error: cannot guess build type; you must specify one

image.png

 

解决方法:指定平台

./configure --prefix=/usr/local  --build=arm-linux

7.5       patch: command not found.


 image.png

没有安装 patch 命令包,执行 yum -y install patch 安装即可

7.6       POD document had syntax errors at /bin/pod2man

编译安装openssl-0.9.8报错

image.png

 

解决方法:

mv /usr/bin/pod2man /tmp/

重新编译安装即可。

 

7.7       ‘::**’ has not been declared

 

编译ice报错

image.png

从日志看是FileUtil.cpp文件异常,使用find命令找到该文件具体位置并按如下方式修改,

image.png

find ./ -name FileUtil.cpp

vim ./src/IceUtil/FileUtil.cpp

增加#include <unistd.h>

image.png

 

如果是FileTracker.cpp等文件提示类似错误,按同样方法修改即可。

vim ./src/Slice/FileTracker.cpp

增加#include <unistd.h>

image.png

 

 

7.8       error: ‘upCast’ was not declared in this scope, and no declarations were found

 

编译ice报错

 

../../include/Ice/Handle.h:106:30: error: ‘upCast’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

image.png

 

源码bug,需下载补丁修复

 

补丁下载:

https://forums.zeroc.com/discussion/5799/patch-for-compiling-ice-with-clang-and-gcc4-7

 

image.png

 

下载后的名字是949.txt,将949.txt上传到服务器上并在Ice-3.4.2目录下执行如下命令加载补丁。

patch -p0 < ../949.txt

 

image.png

image.png

 

7.9       error: ‘ptrdiff_t’ does not name a type

 image.png 

 

image.png

 

vim ./include/Ice/Buffer.h

#include <cstddef>

image.png

 

7.10   error: ‘close’ was not declared in this scope

 image.png


vim ./src/IceGrid/Client.cpp

#include <unistd.h>

image.png

 

如果还报错,继续根据报错提示修改。

image.png

举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

技术小能手

发帖: 0粉丝: 0

发消息 + 关注

发表于2020年10月10日 14:13:10
直达本楼层的链接
沙发
显示全部楼层


点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

发帖: 148粉丝: 15

发消息 + 关注

发表于2020年10月11日 22:00:51
直达本楼层的链接
板凳
显示全部楼层

    

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

火灵

发帖: 172粉丝: 11

发消息 + 关注

发表于2020年10月18日 19:52:25
直达本楼层的链接
地板
显示全部楼层

赞!

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

重新来过

发帖: 212粉丝: 12

发消息 + 关注

发表于2020年10月28日 23:59:36
直达本楼层的链接
5#
显示全部楼层

想请教一下 这个迁移指导是不是在centos下也能参考呢

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

风起云涌1

发帖: 539粉丝: 20

发消息 + 关注

发表于2020年10月29日 10:14:49
直达本楼层的链接
6#
显示全部楼层

感谢分享

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200