- 主题: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.*
官网讲得很清楚吧,它搞了一套中间代码,打通编译前端和后端
不过研究清楚了也没多大意义,绝大多数人顶多也就是用用,你用clang, flang也无需意识到llvm的存在
【 在 snoopyzhao 的大作中提到: 】
: 最近在找 fortran 编译器,我自己熟悉的免费 fortran 编译器就是 gfortran。我知道它是 GCC 中的一员,也用它编译过很多 fortran 程序。
: 然后,我看到了 f18/flang,据说是基于 llvm,然后我去找 llvm 相关的东西,说最近刚刚发布的 llvm 11.0 提供了 flang fortran 编译器支持。然后又看到 flang 其实不能将 fortran 源码编译成可执行文件,需要调用 gfortran 等外部 fortran 编译器……
: ....
: ...................
--
FROM 103.37.140.*
就是一个编译器后端的生成器吧,为了做一个完整的编译器,你还需要提供编译器的前端。 我当年写编译器的时候要是有这种东西就能省不少事情了。。。
【 在 snoopyzhao 的大作中提到: 】
: 最近在找 fortran 编译器,我自己熟悉的免费 fortran 编译器就是 gfortran。我知道它是 GCC 中的一员,也用它编译过很多 fortran 程序。
: 然后,我看到了 f18/flang,据说是基于 llvm,然后我去找 llvm 相关的东西,说最近刚刚发布的 llvm 11.0 提供了 flang fortran 编译器支持。然后又看到 flang 其实不能将 fortran 源码编译成可执行文件,需要调用 gfortran 等外部 fortran 编译器……
: ....
: ...................
--
FROM 113.233.214.*
【 在 pigtracer (知心哥哥) 的大作中提到: 】
: 官网讲得很清楚吧,它搞了一套中间代码,打通编译前端和后端
: 不过研究清楚了也没多大意义,绝大多数人顶多也就是用用,你用clang, flang也无需意识到llvm的存在
我的问题也是不清楚
clang/flang 是个啥呢?它们是编译器?或者就是前端 + 后端?
有了 llvm + clang/flang 是不是就不需要 GCC 那一套了?
--
FROM 117.152.147.*
目前还不是一个功能完整的编译器。忽视它就行了
【 在 snoopyzhao (只打酱油,不兼职) 的大作中提到: 】
: 最近在找 fortran 编译器,我自己熟悉的免费 fortran 编译器就是 gfortran。我知道它是 GCC 中的一员,也用它编译过很多 fortran 程序。
: 然后,我看到了 f18/flang,据说是基于 llvm,然后我去找 llvm 相关的东西,说最近刚刚发布的 llvm 11.0 提供了 flang fortran 编译器支持。然后又看到 flang 其实不能将 fortran 源码编译成可执行文件,需要调用 gfortran 等外部 fortran 编译器……
: ....
: ...................
--
FROM 47.56.237.*
现代编译器一般分前中后三个部分,前端负责把程序设计语言转为一种中间表示,中端对这种中间表示进行优化,后端把优化后的结果转为某种体系结构的机器码。LLVM做的是中后端,它配合一个程序语言的前端(clang,flang)就组成完整的编译器了。
【 在 snoopyzhao (只打酱油,不兼职) 的大作中提到: 】
: 最近在找 fortran 编译器,我自己熟悉的免费 fortran 编译器就是 gfortran。我知道它是 GCC 中的一员,也用它编译过很多 fortran 程序。
: 然后,我看到了 f18/flang,据说是基于 llvm,然后我去找 llvm 相关的东西,说最近刚刚发布的 llvm 11.0 提供了 flang fortran 编译器支持。然后又看到 flang 其实不能将 fortran 源码编译成可执行文件,需要调用 gfortran 等外部 fortran 编译器……
: ....
: ...................
--
FROM 123.114.35.*
【 在 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.*
GCC也是包含前中后三部分的编译器,gfortran是其中一个前端。
【 在 snoopyzhao (只打酱油,不兼职) 的大作中提到: 】
: 所以,llvm + clang/flang 可以替代 gcc/gfortran 了?是不是也可以说 gcc/gfortran 是 GCC 中负责语言的前端?
: 以后的系统上是不是 llvm + clang/flang 与 GCC + gcc/gfortran 选一套就行了?
: 我看 FreeBSD 默认的系统编译器已经是 llvm + clang 了,因为许可证?
: ...................
--
FROM 123.114.35.*
clang和flang都是前端编译器,也是独立的编译器,只不过是把高级语言编译成一种中间语言。
llvm负责把中间语言编译、优化成机器码。
【 在 snoopyzhao (只打酱油,不兼职) 的大作中提到: 】
: 标 题: Re: llvm 到底是个啥?
: 发信站: 水木社区 (Sat Dec 12 17:34:27 2020), 站内
:
:
: 【 在 pigtracer (知心哥哥) 的大作中提到: 】
: : 官网讲得很清楚吧,它搞了一套中间代码,打通编译前端和后端
: : 不过研究清楚了也没多大意义,绝大多数人顶多也就是用用,你用clang, flang也无需意识到llvm的存在
:
: 我的问题也是不清楚
: clang/flang 是个啥呢?它们是编译器?或者就是前端 + 后端?
:
: 有了 llvm + clang/flang 是不是就不需要 GCC 那一套了?
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 117.152.147.*]
--
FROM 106.39.149.*
java 能编译到机器码么
【 在 Knightmare (梦醒时分) 的大作中提到: 】
: clang和flang都是前端编译器,也是独立的编译器,只不过是把高级语言编译成一种中间语言。
: llvm负责把中间语言编译、优化成机器码。
--
FROM 183.23.75.*