Fortran Coder

查看: 3115|回复: 10
打印 上一主题 下一主题

[数学库] lapack库

[复制链接]

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

楼主
发表于 2023-4-8 13:08:16 | 显示全部楼层
本帖最后由 楚香饭 于 2023-4-8 13:10 编辑

没有丝毫影响。

.f (固定格式)和 .f90(自由格式),不能在同一个源代码文件中混用。
但可以在多个源代码之间混用,即一部分源代码文件是固定格式,另一部分是自由格式。这是被允许的。

况且你还是把库编译成lib,

编译成 obj或lib 之后,使用上,都是一样的。
反之如果你想知道,编译前是 .f 还是 .f90,都非常困难(甚至不可能)。


PS:不要未经尝试或推断,就假象出使用上的限制。

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2023-4-8 17:00:42 | 显示全部楼层
本帖最后由 楚香饭 于 2023-4-8 17:04 编辑
caimaxwell 发表于 2023-4-8 14:38
感谢您的解答, 问题在于我在使用makefile文件时,编辑了
FC = "E:\CodeBlocks\MinGW\bin\gfortran"

我也不知道为什么,你需要提供你的 main.f90 文件的内容,其他人才能判断原因。

此外,我建议你一步一个脚印的走。如果打算学习命令行的方式,那么就先用原生命令行。熟练之后,再学习makefile项目管理的方式。

你不妨先用
gfortran -c zgetrf2.f90
gfortran -c main.f90
gfortran main.o zgetrf2.o -o ecsie.x

来试试?这种一步一步的编译,可以让你清晰的明白哪个步骤发生了什么错误。

最后,zgetrf2.f90 应该是不能单独使用的,应该会依赖其他的函数。
我们通常的做法是把 lapack 整体先编译成 lib 文件,然后再整体使用。
(lib可以看作是一堆.o文件的集合。链接器会自动判断用到了哪些 .o 文件,并不会把全部lib链接到ecsie.x中)

像你这样,把lapack中自己所需的 .f 文件挑出来,也不是不行,但得挑很久,因为lapack的内部有复杂的依赖关系。

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

板凳
发表于 2023-4-8 17:38:12 | 显示全部楼层
caimaxwell 发表于 2023-4-8 17:22
“通常的做法是把 lapack 整体先编译成 lib 文件,然后再整体使用”,就是这一步我卡了很久,我的目的就 ...

你有Code::Blocks的话应该是非常简单的,创建一个lib库文件的工程,把所有 *.f 文件添加到工程,然后编译就好了。

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

地板
发表于 2023-4-9 09:14:34 | 显示全部楼层
caimaxwell 发表于 2023-4-8 20:19
但是库里的文件是.f(fortran77)格式的,我创建的文件格式都是.f90(fortran90)文件的,把.f文件copy过 ...

看3楼的回答
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-5 19:30

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表