写点什么

编译型语言成迁移钉子户?鲲鹏迁移有妙招

凯强

2020 年 7 月 24 日

编译型语言成迁移钉子户?鲲鹏迁移有妙招


编译型语言在开发过程中并不少见,比如 C/C++更是大学里就要学到的语言。其采用专门的编译器针对特定平台将某种高级语言源代码一次性“翻译”成可被平台硬件执行的机器指令和操作数,进而将其包装成该平台所能识别的可执行性程序的格式。经过编译生成的可执行性程序即便脱离开发环境,也可以在特定的平台上独立运行。


不过,编译型语言虽然通过运行效率较高,但却有着一个比较麻烦的弱点,那就是其程序由于已经编译成特定平台上的机器码,所以通常无法移植到其他平台上运行。可在当下,随着大数据和智能化浪潮的汹涌,不少企业对于算力的渴望达到新的峰值,从 x86 平台迁移到鲲鹏等新的算力平台上也并不少见,这时编译型语言就变成了名副其实的钉子户,迁移流程会复杂太多。


一般来讲,编译型语言在移植时,必须将源代码复制到新平台上,针对新平台进行修改,至少也需要采用新平台上的编译器重新编译。而基于鲲鹏处理器的打造的计算平台在迁移时则获得了很多针对性的优化,并提供了大量的迁移工具,帮助开发者简化迁移流程。


在迁移时,其编译构建流程大体可以有这几步。首先在在获取源代码之后,选择所需的编译环境,安装编译器 gcc 等;根据源码的编译脚本生成 Makefile 文件,再用 Makefile 编译生成可持续文件;担任如果代码之中有依赖 x86 平台的 SO 库,那么这部分的依赖库是需要重新编译替换的;在编译完成之后进行安装部署,之后进入到实际的系统之中进行测试。


由于编译型语言的特殊性,其在迁移时,还有很多需要注意的点。由于鲲鹏平台和 x86 平台的差异,在 x86 下 -m64 代码的主要功能是将应用程序编译为 64 位,对应到鲲鹏上是用 -mabi=lp64 的编译选项,其需要在脚本中修改;gcc 编译器所自带的 x86 编译选项就是 x86_64,对应到鲲鹏平台上是 aarch64,对编译宏下的代码需要机箱内对应的移植;而 Builtin 函数是编译器自带的函数,需要移植的普通 builtin 函数并不多,大部分需移植的 builtin 函数集中在 SSE intrinsic 函数内;SSE Intrinsic 函数,涉及到向量化预算加速技术,如果有开源工程可以直接应用。


由此可见,编译型语言在迁移时虽然复杂,但却并非无迹可寻。而如果你想探索更多迁移过程中的技术细节,7 月 30 日《鲲鹏展翅 创客天府•鲲鹏应用创新大赛 2020 四川赛区宣讲会》将在线为你揭晓。此次宣讲会中,不仅会有鲲鹏技术专家讲解应用代码迁移过程中的细节问题,还将为各位开发者讲述鲲鹏应用创新大赛的赛题和参赛技巧。


鲲鹏应用创新大赛 2020 在全国开设了 13+1 个赛区,总奖金高达 260 万,四川赛区设置了“金融”、“政府”、 “大数据”、“ARM 原生应用”和“开放命题”5 个赛题,奖金总额也达到了 32 万。如果你想与各路好手同台竞技,探索开发过程中技术奥秘,那么千万要记得在 7 月 30 日关注《鲲鹏展翅 创客天府•鲲鹏应用创新大赛 2020 四川赛区宣讲会》。


直播议程(四川赛区)


  • 14:00~14:05 主持人介绍

  • 14:05~15:35 鲲鹏应用代码迁移指导

  • 15:35~15:50 鲲鹏应用创新大赛介绍

  • 15:50~16:20 鲲鹏应用创新大赛答疑


比赛介绍


鲲鹏展翅 创客天府•鲲鹏应用创新大赛 2020 四川赛区已经开始备战。为贯彻落实成都市鲲鹏产业发展的战略部署,支持四川中小企业数字化转型,匹配鲲鹏产业发展的人才需求,四川鲲鹏生态创新中心与华为技术有限公司成都工业学院面向四川开发者开展鲲鹏应用创新比赛活动,激发创新潜力,培养鲲鹏产业发展所需的基于鲲鹏生态的软件适配、迁移、软件开发、解决方案孵化等能力,加速鲲鹏产业融合型人才培养、加速构建以鲲鹏为底座的覆盖全产业链的千亿级计算产业。


本赛事奖项激励总额 32 万,“金融”、“政府”、 “大数据”、“ARM 原生应用”和“开放命题”5 个赛题,各赛题奖项设置详情如下:


  • 一等奖:4 个团队(每赛题 1 个团队),每团队奖励:3 万现金;

  • 二等奖:4 个团队(每赛题 1 个团队),每团队奖励:2 万现金;

  • 三等奖:4 个团队(每赛题 1 个团队),每团队奖励:1 万现金;


其中“ARM 原生应用”赛题设置一等奖(1 个团队),团队奖励: 2 万现金


此外,针对高校评选最佳实践奖、最佳创新奖、最佳成果奖共 3 个团队(每个奖项 1 个团队),获奖团队成员各奖励一部华为手机 Mate30。


报名方式


目前,本次大赛的报名渠道已经全面开放,所有的有意参赛者均可在 8 月 15 日 18 时前报名并提交作品。如果你对此次比赛还有所疑惑,或者还想进一步了解此次比赛的相关信息,欢迎在 7 月 30 日《鲲鹏展翅 创客天府•鲲鹏应用创新大赛 2020 四川赛区宣讲会》与讲师进行提问和互动,点击下方链接或扫描海报二维码即可报名参与了哦!


https://competition.huaweicloud.com/information/1000041276/introduction



2020 年 7 月 24 日 14:48151

评论

发布
暂无评论
发现更多内容

《Web全栈实用编程》一书征集意见

老魚

程序员 前端 Web 后端 全栈

设计模式之单件模式

Geek_896619

Java 设计模式

程序员为什么技术这么厉害,赚得钱却不多?

金刚小书童

职业规划 技术管理 程序员成长 程序员次第 高级程序员

架构师训练营第一周作业

陈靓-哲露

架构师训练营-第一周-食堂就餐卡系统设计

Anrika

架构师 极客大学架构师训练营

食堂就餐卡系统架构设计文档

冯凯

极客大学架构师训练营

极客时间 - 架构师训练营 - week1 - 食堂就餐卡系统设计

毛聪

极客时间 极客大学架构师训练营 食堂就餐卡系统设计

食堂就餐卡系统架构设计

任小龙

食堂就餐卡系统架构设计文档

hifly

极客大学架构师训练营 UML 架构文档 部署图 时序图

极客大学架构师训练营第一周学习总结

竹森先生

学习 架构设计 极客大学架构师训练营

第一周作业--食堂就餐卡系统系统

南宫煌

极客大学架构师训练营 UML

架构师训练营-第一周学习总结

hellohuan

极客大学架构师训练营

架构师训练营第1周作业一:食堂就餐卡系统设计

sunpengjian

week1-食堂就餐卡系统设计

不在调上

食堂就餐卡系统设计

hellohuan

架构 极客大学架构师训练营

架构师训练营第1周_学习总结

方舟勇士

课程总结

架构师训练营第1周作业二:学习总结

sunpengjian

基于UML的食堂就餐卡系统设计

王海

极客大学架构师训练营

谈谈阿里云发布新一代容器、Serverless 等云原生产品

关贺宇

阿里云 容器 云原生 中间件

第一周课后作业——食堂就餐卡系统概要设计

jiangnanage

我们需要干货吗?

Neco.W

能力提升 经验分享 干货

ZooKeeper核心原理及应用场景

古月木易

【话题讨论】「世界上最好的语言」?25周岁的 PHP “配” “不配”

InfoQ写作平台官方

php 写作平台 PHP25周年 活动专区

Week01 学习笔记

任小龙

区块链技术如何应用于版权保护?

CECBC区块链专委会

区块链技术 维权 著作权 版权保护 侵权

产品路线图–您的产品战略路径指南

涛哥

敏捷 产品经理

架构师训练营-作业2-学习总结

狂奔嘀兔纸

极客大学架构师训练营

ChaosBlade:从零开始的混沌工程(二)

郭旭东

云原生 混沌工程

架构训练营第一周学习总结

陈靓-哲露

食堂就餐卡系统设计文档

架构5班杨娟Jessie

极客大学架构师训练营

架构师训练营第一周-食堂就餐卡系统设计

王铭铭

编译型语言成迁移钉子户?鲲鹏迁移有妙招-InfoQ