将fortran代码链接到库

时间:2014-05-17 07:10:14

标签: linux linker gfortran

我正在尝试将我的主要代码链接到库

主要代码:

program main1
call test1
end program main1

库:

subroutine test1
print*,'ok'
end subroutine test1

然后我创建了库:

gfortran -shared -fPIC -o lib1.so 1.f90

并编译主代码

gfortran -c main.f90

和链接

gfortran main.o lib1.so

但是我遇到了这个错误:

./a.out: error while loading shared libraries: lib1.so: cannot open shared object file: No such file or directory

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您的示例确实有效,但您只是遗漏了一件小事:当使用共享库时,您的程序(main.f90 / a.out)将尝试在其中一个库文件夹中找到链接库(例如/lib*/usr/lib*/usr/local/lib*)。

如果要为共享库指定另一个文件夹(例如,用于测试/调试),可以使用环境变量LD_LIBRARY_PATH来"告诉" linux另一个寻找共享库的地方。

因此,假设您在/home/mojijoon/fortran文件夹中编写了程序,则可以在设置库路径后获得正确的输出:

$: export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/home/mojijoon/fortran
$: ./a.out
  ok

您可以在此处找到有关共享库(以及LD_LIBRARY_PATH环境变量)的更多信息: tldp.org - shared libraries