我正在为私有项目编译库,这取决于许多库。具体来说,其中一个依赖项是使用Fortran编译的。在某些情况下,我已经看到了使用g77
编译的依赖项,而我看到它使用gfortran
进行编译。然后,我的项目./configure
要与-lg2c
或-lgfortran
相关联,但到目前为止,我一直在手工制作。
如果有可能,我怎么能从查看依赖库(通过例如nm
或其他一些实用程序?)中找出所使用的编译器是g77
(然后是我') ll在我的链接选项中使用-lg2c
或gfortran
(然后我会使用-lgfortran
)?
提前致谢!
答案 0 :(得分:6)
nm filename | fgrep ' __g77'
如果使用g77,将给出结果,同时
nm filename | fgrep '@@GFORTRAN'
如果使用gfortran,将给出结果。
答案 1 :(得分:3)
你需要在nm filename
的输出中找一些东西来表示是否使用了g77或gfortran。在大多数情况下,如果库至少在一个地方输入输出,它将调用libg2c或libgfortran,您会注意到其中包含g77
的符号,或gfortran
。所以,你最好的选择是使用grep:
nm filename | grep _g77_
nm filename | grep _gfortran_
两个注释:
@@GFORTRAN
的Grepping不可靠:它仅适用于支持库版本控制的平台,包括例如Linux但不是Windows或Mac OS。答案 2 :(得分:1)
您可以通过使用nm来查明它,并查看已编译的代码是否使用了其中一个或哪些函数,但这非常糟糕。您可以根据可用的库来确定它(如果没有可用的libg2c,那么它不是g77,例如),但如果两者都可用,那么你仍然有一些歧义。如果您可以自己构建依赖项,那么您可以使用构建过程的一部分以某种方式告诉另一个部分(变量,文件等)您使用的那个。