一.应用迁移适配背景简介
1.新创的宏观形势,世界变革:
(1).世界第四次工业革命:21世纪发起的全新技术革命,基于网络物理系统,以人工智能,量子信息技术,生物技术等为标志,全面开启新一次的经济变革、社会变革以及国际秩序变革(机器、电气、电子、人工智能) 中美局部脱钩:高端科技中不再提供芯片以及其他一些科技配套技术或产品,医药方面摆脱中国供给 芯片之上的产业:整机、云计算、操作系统、数据库、中间件等基础应用以及之上的智能化应用 使命:具备全面TD的能力的作为目标(TD,替代)
中国提出“加快形成以国内大循环为主体、国内国际双循环相互促进的新发展格局。
(2)国内数字化转型:当前世界经济数字化转型加速,“十四五”期间,数字经济的作用和地位将继续提升,是今后经济增长的重要源泉,是提高全要素生产率的重要途径。党的十九届五中全会提出:加快构建以国内大循环为主体,国内国际双循环相互促进的新发展格局。 信创是畅通国内大循环、塑造我国在国际大循环中主动地位的关键。从技术体系引进、强化产业基础、加强保障能力等方面着手,促进信创产业在本地落地生根,由点状分散发展到产业集群,从而形成生态集聚,是信创产业发展的必然趋势。
(3)国产化历程:
XC:信息技术应用创新产业
863计划:1986年3月启动实施的“高技术研究发展计划(863计划)” ,旨在提高我国自主创新能力,坚持战略性、前沿性和前瞻性,以前沿技术研究发展为重点,统筹部署高技术的集成应用和产业化示范,充分发挥高技术引领未来发展的先导作用。
核高基:是对核心电子器件、高端通用芯片及基础软件产品的简称,是2006年国务院发布的《国家中长期科学和技术发展规划纲要(2006-2020年)》中与载人航天、探月工程并列的16个重大科技专项之一。
AK:面向党政的具备安全可靠特性的国产化替代项目,信息技术应用创新的前身。
2016年3月4日,24家专业从事软硬件关键技术研究及应用的国内单位,共同发起成立了一个非营利性社会组织,并将其命名为“信息技术应用创新工作委员会”。 这个委员会简称ITAIC,这就是“信创”这个词的最早由来。工委会成立后不久,全国各地相继又成立了大量的信创产业联盟。这些联盟共同催生了庞大的信息技术应用创新产业,也被称为“信创产业”,简称“信创”。
2.新创发展:
(1)内驱力:中国在信息技术底层标准、架构、生态掌控力等方面非常薄弱,已成为其信息产业发展的重要制约和阻碍;是中国在进军社会主义现代化强国征程中的绊脚石。
某些强国以此打压我们,相应的事件有:
(2)国家意志: 有关信创产业,近期国家又出台了新的政策。2022年9月底下发的79号文,全面指导国资信创产业发展和进度,要求所有央企+地方国企落实信创全替代。
未来的信创为持久化、常态化产业,在国家意志的大背景下各大国产化厂商持续发力,人才缺口呈井喷式增长。
(3)市场,行业 :从信创产业整体市场来看,相关数据显示,2021年信创产业整体市场规模6886.3亿元,近五年复合增速达到35.7%,预计2025年市场规模将达到23354.6亿元。
国家此前制定的“2+8+N”的信创三步走战略。 “2”就是首先实现机关范围内的国产替代,同时顺带打磨产品、培育骨干企业。 “8”指的是金融、电信、电力、石油、交通、航空航天、教育、医疗8大关键行业。在产品相对好用、生态比较成熟后,信创将由党政系统扩大到8大关键行业。 “N”就是其他行业,最终将信创产品扩展到全行业。
(4) 新创生态:
二.应用适配与迁移概览
1. 为什么要做应用适配与迁移?
为了合规性和指令集的差异
2.不同指令集的差异:
3.应用迁移适配与迁移概述:
应用适配与迁移:
应用迁移步骤:
数据库迁移步骤:
后面的常规的内容,如从源码到执行,编译型语言应用移植,应用移植MaKefile,RPM这些已有人描述的很详细了,后面我就分享下解释性语言python应用移植。
四.解释性语言python的应用移植:
1.python简介:
Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆 于1990 年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
2.python语言移植:
编写测试代码:“hello.py
3.查询本地环境:
[root@jd4 ~]#yum search python
会发现源中有python2与python3
[root@jd4 ~]# python2
Python 2.7.18 (default, Mar 14 2021, 15:03:19)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
[root@jd4 ~]# python3
Python 3.7.9 (default, Mar 2 2021, 14:57:35)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
4.安装numpy模块:
[root@jd4 ~]# python3
Python 3.7.9 (default, Mar 2 2021, 14:57:35)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'
发现没有numpy模块供我们使用。
4.安装pip来管理python模块
yum install python3-pip -y
#由于pip3 默认的search 功能被禁止了,所以先安装pip_search
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
#升级
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
#更改pip使用国内源 清华大学开源软件镜像站
pip install pip_search
pip_search numpy
观察输出结果,有numpy模块:
使用pip命令进行安装:pip install numpy
5.在python3中使用numpy模块:
[root@jd4 ~]# python3
Python 3.7.9 (default, Mar 2 2021, 14:57:35)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.zeros(2)
array([0., 0.])
>>>quit()
看到np.zeros可以正常使用,代表已经可以在python3的环境中正常使用numpy模块了。
6.通过重新编译,迁移numpy模块,
(1)移除刚才pip安装的numpy模块
[root@jd4 ~]# pip uninstall numpy
Found existing installation: numpy 1.21.5
Uninstalling numpy-1.21.5:
Would remove:
/usr/local/bin/f2py
/usr/local/bin/f2py3
/usr/local/bin/f2py3.7
/usr/local/lib64/python3.7/site-packages/numpy-1.21.5.dist-info/*
/usr/local/lib64/python3.7/site-packages/numpy.libs/libgfortran-daac5196.so.5.0.0
/usr/local/lib64/python3.7/site-packages/numpy.libs/libopenblasp-r0-444d0ba0.3.17.so
/usr/local/lib64/python3.7/site-packages/numpy/*
Proceed (Y/n)? y
Successfully uninstalled numpy-1.21.5
(2)验证移除效果
[root@jd4 ~]# python3
Python 3.7.9 (default, Mar 2 2021, 14:57:35)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'
>>> quit()
(3)安装编译所需要的编译器
#yum install gcc-gfortran -y
(4)下载Numpy源码包
#cd /usr/local/src
从配套资料中找到已经下载好的numpy-1.19.4.tar.gz软件包到此目录下
(5)移植-编译安装
tar fvxz numpy-1.19.4.tar.gz
cd numpy-1.19.4/
pip install Cython
python3 setup.py install
(6)验证
千万记得第一步退出源码安装路径
#cd ~
# python3
Python 3.7.9 (default, Mar 2 2021, 14:57:35)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.zeros(2)
array([0., 0.])
>>> quit()
ok 没问题,成功了。
以上就是这次的全部内容了。