macos - 使用 dylib 时 gfortran 失败
问题描述
我正在使用 gcc 在我的 MacPro 上试验动态库 (dylib),在 macOS Big Sur 下使用 gcc 10.2.0,因为我计划在 macOS 上移植我的旧 Fortran 程序。使用 Homebrew 安装 gcc 后,我编写了以下简单示例:
函数.h
int func();
函数c
#include "func.h"
int func() {
return 42;
}
foo.c
#include <stdio.h>
#include "func.h"
int main() {
int i;
i = func();
printf("%d\n", i);
return 0;
}
然后我按如下方式构建可执行文件:
$ gcc -c func.c
$ gcc -o func.dylib -dynamiclib -fPIC func.o
$ gcc -c foo.c
$ gcc -o foo foo.o func.dylib
希望当我运行 foo 时,我得到了预期的结果,并且看起来 dylib 工作正常:
$ foo
42
$
然后我在 Fortran 中重复了同样的练习,计划使用 gcc 的 gfortran 组件:
功能2.f90
integer function func2()
func2 = 42
end function func2
foo2.f90
program foo2
integer :: i
i = func2()
write(*, 10) i
10 format (i2)
end program foo2
我构建的可执行文件如下:
$ gfortran -c func2.f90
$ gfortran -o func2.dylib -dynamiclib -fPIC func2.o
$ gfortran -c foo2.f90
$ gfortran -o foo2 foo2.o func2.dylib
现在,当我运行程序时,我得到 0,好像 dylib 失败了:
$ foo2
0
$
我一直在互联网上寻找可能的解释,但到目前为止找不到任何提示......
任何帮助将不胜感激!