java迁移在arm,为什么必须将代码从x86迁移到ARM,这篇文章给你答案(2)

Java、Python等跨平台语言在迁移到ARM架构时,技术难度相对较低,主要涉及JVM或解释器的适配。对于编译型语言如C/C++,需要重新编译并解决编译脚本、编译宏、内联汇编、SSE intrinsic函数等问题。Java迁移重点关注JDK的替换和SO库的依赖处理,Python迁移类似,需关注运行环境和SO库的适配。
摘要由CSDN通过智能技术生成

实际上,像Java、Python、Perl这种跨平台的开发语言,它的迁移的技术难度相对来说是比较低的,主要是因为Java有一个JBM,Python中存在一个解释器,它们屏蔽了大部分的平台架构上的差异。与之相反,C和C++的难度相对来说要高一些,原因是如内敛函数还有x86加速的一些指令,无法支持像微软这种闭源的开发架构。

典型的如C/C++/Go语言,都属于编译型语言。编译型语言开发的程序在从x86处理器迁移到鲲鹏处理器时,必须经过重新编译才能运行。如下图所示,源码需要由编译器、汇编器翻译成机器指令,再通过链接器链接库函数才能生成机器语言程序。

init.jhtml?siteId=590815

接下来就是C/C++代码的编译构建了,这个过程一共分为六步:

获取源码:通过github或第三方开源社区获取

准备编译环境:安装编译器gcc等

使用源码中的CMakeLists.txt或configure脚本生成makefile

执行makefile编译可执行程序

替换依赖库:重编译或替换依赖x86平台的so库

将可执行程序安装部署到生产或测试系统

既然是最为复杂的,C/C++语言的迁移问题也是涉猎最广泛的,主要涉及到七类问题:

编译脚本和编译选项的移植:以x86 下 -m64 代码为例,其主要功能是将应用程序编译为 64 位,对应到鲲鹏上是用 -mabi=lp64 的编译选项,此类编译选项需要在脚本中修改;此外, x86 平台上默认的 char 类型是一种有符号的类型,对应到鲲鹏上则是无符号类型,在移植过程中需要显示定义并将 char 类型定义为有符号,方法一是在源代码里加上 signed char,方法二是直接用 fsigned-char 来修改

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值