- 主题:llvm 到底是个啥?
最近在找 fortran 编译器,我自己熟悉的免费 fortran 编译器就是 gfortran。我知道它是 GCC 中的一员,也用它编译过很多 fortran 程序。
然后,我看到了 f18/flang,据说是基于 llvm,然后我去找 llvm 相关的东西,说最近刚刚发布的 llvm 11.0 提供了 flang fortran 编译器支持。然后又看到 flang 其实不能将 fortran 源码编译成可执行文件,需要调用 gfortran 等外部 fortran 编译器……
....
Usage: flang hello.f90 -o hello.bin
By default, Flang will parse the Fortran file hello.f90 then unparse it to a canonical Fortran source file. Flang will then invoke an external Fortran compiler to compile this source file and link it, placing the resulting executable in hello.bin.
....
彻底糊涂了,这是在折腾啥?
--
FROM 117.152.147.*
【 在 pigtracer (知心哥哥) 的大作中提到: 】
: 官网讲得很清楚吧,它搞了一套中间代码,打通编译前端和后端
: 不过研究清楚了也没多大意义,绝大多数人顶多也就是用用,你用clang, flang也无需意识到llvm的存在
我的问题也是不清楚
clang/flang 是个啥呢?它们是编译器?或者就是前端 + 后端?
有了 llvm + clang/flang 是不是就不需要 GCC 那一套了?
--
FROM 117.152.147.*
【 在 ArchLinux (a lightweight and flexible distribution) 的大作中提到: 】
: 现代编译器一般分前中后三个部分,前端负责把程序设计语言转为一种中间表示,中端对这种中间表示进行优化,后端把优化后的结果转为某种体系结构的机器码。LLVM做的是中后端,它配合一个程序语言的前端(clang,flang)就组成完整的编译器了。
所以,llvm + clang/flang 可以替代 gcc/gfortran 了?是不是也可以说 gcc/gfortran 是 GCC 中负责语言的前端?
以后的系统上是不是 llvm + clang/flang 与 GCC + gcc/gfortran 选一套就行了?
我看 FreeBSD 默认的系统编译器已经是 llvm + clang 了,因为许可证?
--
FROM 117.152.147.*