首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找出所使用的编译器: g77还是gfortran

如何找出所使用的编译器: g77还是gfortran
EN

Stack Overflow用户
提问于 2008-11-19 15:10:20
回答 3查看 1.9K关注 0票数 7

我正在为一个私有项目编译库,它依赖于许多库。具体来说,其中一个依赖项是用Fortran编译的。在某些情况下,我见过用g77编译的依赖项,在其他情况下,我见过用gfortran编译的依赖项。然后我的项目是./configure'd链接到-lg2c-lgfortran,但到目前为止我都是手工完成的。

如果可能,我如何通过查看依赖库(通过nm或其他实用程序?)找出所使用的编译器是g77 (然后我将在链接选项中使用-lg2c )还是gfortran (然后我将使用-lgfortran)?

提前感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-11-19 20:00:50

代码语言:javascript
复制
nm filename | fgrep ' __g77'

如果使用了g77,则会给出结果

代码语言:javascript
复制
nm filename | fgrep '@@GFORTRAN'

如果使用gfortran,则会给出结果。

票数 6
EN

Stack Overflow用户

发布于 2009-07-23 08:03:10

您需要在nm filename的输出中使用grep来表示使用的是g77还是gfortran。在大多数情况下,如果库至少在一个地方执行输入-输出,它将调用libg2c或libgfortran,您将注意到其中包含g77gfortran的符号。所以,最好的办法是使用grep:

代码语言:javascript
复制
nm filename | grep _g77_
nm filename | grep _gfortran_

两个注意事项:

geocar建议的用于@@GFORTRAN

  1. Grepping是不可靠的:它只能在支持库版本控制的平台上工作,包括例如linux,但不包括Windows或Mac。
  2. 一些编译代码仍然可能完全不调用支持库函数(如果它所做的所有事情都是简单的算术运算,并且没有输入-输出,例如)。在这种情况下,除非它是用调试选项编译的,否则不可能知道是哪个编译器输出的。
票数 3
EN

Stack Overflow用户

发布于 2008-11-19 15:45:40

您也许可以通过使用nm,并查看编译后的代码是否使用了其中之一的函数来解决这个问题,但这是一个相当复杂的问题。您也许能够根据哪个库可用来确定(例如,如果没有可用的libg2c,那么它就不是g77 ),但是如果两个库都可用,您仍然会有一些模糊之处。如果您可以自己构建依赖项,那么您可以使用构建过程的一部分以某种方式告诉另一部分(变量、文件等)。你用的是哪一个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/302171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档