Fortran Coder

查看: 2951|回复: 6
打印 上一主题 下一主题

[求助] .f90如何调用.f文件

[复制链接]

44

帖子

4

主题

0

精华

熟手

F 币
179 元
贡献
90 点
跳转到指定楼层
楼主
发表于 2022-5-24 09:42:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我遇到这样一个问题,我的程序是.f90的。但是我需要调用一个.f文件。我以往的做法是把.f文件中的subroutine复制到.f90程序下。但是这次显示不兼容。请问有什么办法解决吗?

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2022-5-25 08:16:28 | 只看该作者
2个文件。分别编译,然后一起链接。

具体操作要看你用的什么编译环境。

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
板凳
发表于 2022-5-25 08:18:39 | 只看该作者
本帖最后由 kyra 于 2022-5-25 08:57 编辑

在另一个帖子里看到你是linux下用的gfortran。那么很简单。

$ gfortran a.f90 a.f -o ex1ftest3

评分

参与人数 1F 币 +1 收起 理由
kyra + 1 赞一个!

查看全部评分

44

帖子

4

主题

0

精华

熟手

F 币
179 元
贡献
90 点
地板
 楼主| 发表于 2022-5-25 14:10:05 | 只看该作者
vvt 发表于 2022-5-25 08:18
在另一个帖子里看到你是linux下用的gfortran。那么很简单。

$ gfortran a.f90 a.f -o ex1ftest3 ...

可是我的a.f90文件是第三方的开源函数库,它里面的路径是用makefile就直接写好的。b.f文件不是这个函数库的,我都是 $make a,就直接编译了。那这种情况b.f文件也是在命令行里添加吗?还是要自己改makefile文件

260

帖子

0

主题

0

精华

版主

World Analyser

F 币
721 元
贡献
512 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
5#
发表于 2022-5-25 14:39:16 | 只看该作者
你的开源函数库,编译后是个可执行文件还是库?
1. 如果编译后是可执行文件,那看你要如何调用。
      a. 如果是可执行文件调用可执行文件。那么在 b.f 代码里合适位置 system("./a") 就行了。
      b. 如果是内存调用。需要把开源函数库从“编译成可执行文件”修改为“编译成库”
2. 如果编译后就是库。假如编译后是 a.a,那么
$ gfortran a.a b.f -o ex1ftest3

44

帖子

4

主题

0

精华

熟手

F 币
179 元
贡献
90 点
6#
 楼主| 发表于 2022-5-25 17:34:36 | 只看该作者
kyra 发表于 2022-5-25 14:39
你的开源函数库,编译后是个可执行文件还是库?
1. 如果编译后是可执行文件,那看你要如何调用。
      a.  ...

make 后会产生一个没有后缀的可执行文件。至于是不是内存调用我不清楚

makefile.png (35.61 KB, 下载次数: 165)

makefile.png

260

帖子

0

主题

0

精华

版主

World Analyser

F 币
721 元
贡献
512 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
7#
发表于 2022-5-25 21:02:25 | 只看该作者
你确定是可执行文件而不是库的话。进程调用或内存调用都可以(这是两条路),主要取决于你的目的。
最简单的就是在 b.f 代码里合适位置 system("./a") 就行了。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-24 07:27

Powered by Tencent X3.4

© 2013-2024 Tencent

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