方舟编译器源代码疑似曝光,华为李小龙:来自服务器部门?
前几天,赶在华为开发者大会开幕前几天,华为已经在官方社区正式公布了方舟编译器的安装详情以及下载地址。
官方介绍称,方舟编译器是基于GCC开发的交叉编译器套件,它包括了C、C++、Fortran的前端,也包括了这些语言的库(如libstdc++、libgcc等)。HCC运行在X86 linux架构服务器上,生成的二进制运行在Aarch64架构服务器上。
来源:tsuki
链接:https://www.zhihu.com/question/338350284
引起争议后,华为手机产品线副总裁李小龙在微博上对“GCC套皮说”进行了辟谣,他表示:「这个网站不是华为消费者BG维护的网站,此编译器好像是服务器部门用的,和我们之前和P30一起发布的方舟编译器没有任何关系。」
链接:https://www.zhihu.com/question/338350284/answer/776111129
华为副总裁在微博说这是另一个 BG 的同名产品。那我们继续等待几天后真正的方舟编译器吧。
原答案:
下载页的开始称方舟编译器叫 HCC:
我们从标注着源码下载的链接这里,下载传说中的方舟编译器:
下载下来的 tar 包却叫 gcc-ark:
解压缩一看,没找到任何名称中含 ark/fangzhou/hcc/huawei 等单词的文件,却和我刚从 Arch Linux 仓库 拉下来的 gcc 交叉工具链蜜汁相似:
https://www.archlinux.org/packages/community/x86_64/aarch64-linux-gnu-gcc/
这里我们先忽视从源码下载链接里下载到了二进制文件这个问题。
继续运行,看起来也是个 gcc。此外贴心的 GPLv3 协议摘要,提醒着华为赶紧把它开源:
尝试编译个 c 代码,目标架构的确是 elf64-littleaarch64:
继续搜索一下编译器二进制文件里的字符串,找不到任何相关的独立单词:
不过倒是可以看到一些调试信息:
到此为止,最好的情况也只可能是华为在 gcc 上加了一些 patch,增加了一些优化 pass 等,重新打包并宣称这是其「自主研发」的新一代编译器。先不提这样的行为是否有分裂社区的嫌疑。看看其当时的宣传:
说好的自主研发的多语言联合优化的 Android 上的 Java 编译器呢?
不过有人说华为开发者大会还没有召开,现在放出的这个还不是完全版。那我们就先等等,期待一下几天后放出的完全版。
希望我被打脸。毕竟我刚为华为贡献了一台 Matebook 14 的销量呢。
阅读更多
Java泛型--BeanUtils.copyProperties引发的血案
欢迎关注微信公众号:终端研发部,一起交流和学习
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java中的Volatile关键字
Java的volatile关键字用于标记一个Java变量为“在主存中存储”。更确切的说,对volatile变量的读取会从计算机的主存中读取,而不是从CPU缓存中读取,对volatile变量的写入会写入到主存中,而不只是写入到CPU缓存。 实际上,从Java5开始,volatile关键字不只是保证了volatile变量在主存中写入和读取,我回在后面的部分做相关的解释。 变量可见性问题 Java的volatile关键字保证了多个线程对变量值变化的可见性。这听起来有点抽象,让我来详细解释。 在一个多线程的程序中,当多个线程操作非volatile变量时,出于性能原因,每个线程会从主存中拷贝一份变量副本到一个CPU缓存中。如果你的计算机有多于一个CPU,每个线程可能会在不同的CPU中运行。这意味着每个简称拷贝变量到不同CPU的缓存中,如下图: 对于非volatile变量,并没有保证何时JVM从主存中读取数据到CPU缓存,或者从CPU缓存中写出数据到主存。这会导致一些问题。 想象一种情况,多于一个线程访问一个共享对象,这个共享对象包含一个计数变量如下声明: public class ShareOb...
- 下一篇
高性能MySQL之基础架构
高性能MySQL之基础架构一、背景为什么我们需要先学习MYSQL的基础架构先呢? 原因很简单,当我们需要了解一件事物的时候,我们只有站在宏观的层面,才能层层剥丝抽茧的去理解问题。举个例子,我们要看一个框架的源码,一开始就想进去研究,却发现找不着北,原因很简单,因为我们没有鸟瞰全貌,我们根本不知道入口在哪里。因此我们学习MYSQL的时候也是这样。先从高纬度理解问题,最后看到里面有哪些组件,一层层的拆解,这样让我们对mysql有更深入的理解。废话不多说,我们先看总体的逻辑架构图,如下所示。 二、Mysql总体逻辑架构 从图中不难看出,不同的存储引擎共用一个Server层,也就是从连接器到执行器的部分。可以看到Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如触发器、视图等。 需要主意的是存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。现在最常用的存储引擎是InnoDB,它从MySQL ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS关闭SELinux安全模块