我正在为一个私有项目编译库,它依赖于许多库。具体来说,其中一个依赖项是用Fortran编译的。在某些情况下,我见过用g77编译的依赖项,在其他情况下,我见过用gfortran编译的依赖项。然后我的项目是./configure'd链接到-lg2c或-lgfortran,但到目前为止我都是手工完成的。
如果可能,我如何通过查看依赖库(通过nm或其他实用程序?)找出所使用的编译器是g77 (然后我将在链接选项中使用-lg2c )还是gfortran (然后我将使用-lgfortran)?
提前感谢!
发布于 2008-11-19 20:00:50
nm filename | fgrep ' __g77'如果使用了g77,则会给出结果
nm filename | fgrep '@@GFORTRAN'如果使用gfortran,则会给出结果。
发布于 2009-07-23 08:03:10
您需要在nm filename的输出中使用grep来表示使用的是g77还是gfortran。在大多数情况下,如果库至少在一个地方执行输入-输出,它将调用libg2c或libgfortran,您将注意到其中包含g77或gfortran的符号。所以,最好的办法是使用grep:
nm filename | grep _g77_
nm filename | grep _gfortran_两个注意事项:
geocar建议的用于@@GFORTRAN的
发布于 2008-11-19 15:45:40
您也许可以通过使用nm,并查看编译后的代码是否使用了其中之一的函数来解决这个问题,但这是一个相当复杂的问题。您也许能够根据哪个库可用来确定(例如,如果没有可用的libg2c,那么它就不是g77 ),但是如果两个库都可用,您仍然会有一些模糊之处。如果您可以自己构建依赖项,那么您可以使用构建过程的一部分以某种方式告诉另一部分(变量、文件等)。你用的是哪一个。
https://stackoverflow.com/questions/302171
复制相似问题