使用动态链接库
编译主程序
gfortran main.f90 libfcode.so -o.exe
运行(失败尝试)
./exe 失败!
找不到动态链接库
解决办法: 设置LD_LIBRARY_PATH,告诉linux系统 运行时候动态链接库的搜索路径
export LD_LIBRARY_PATH= ./
随后再运行
注:ldd命令可以查看可执行文件所依赖的动态链接库。
======================================================
使用第三方函数库
告诉编译器 include (mod文件)、lib(链接时候用到)、DLL Runtime Library 运行时库、路径和文件名
lapack安装(编辑make.inc => 编辑Makefile => make 生成liblapack.a,librefblas.a)
Lapack 使用
演示使用
gfortan test_lapack.f90 -o x
错误:没有定义的'sgesv" undefined reference to ''
需要把函数库带进来,有三种方法:
1 直接把函数库带进来 (每次都需要输入函数库的名字和路径,比较粗暴的链接方式)
gfortran test_lapack.f90 -o x lapack-3.6.1/liblapack.a lapack3.6.1/librefblas.a
2 将这两个函数库拷到系统lib目录里面去
sudo cp lapack-3.6.1/lib*.a /usr/lib
以后编译时候带上库名称就可以
gfortran test_lapack.f90 -llapack -lrefblas
3 如果没有系统管理员权限,或者不想拷到系统目录下去,有另一种方法。
加-L选项,将函数库所在路径告诉编译器 gfortran test_lapack.f90 -L lapack-3.6.1/ -llapack -lrefblas
如果有include,可能还需要加-I 选项
总结
========================================
linux下C/C++编程导入第三方库文件的几种方法
https://blog.csdn.net/kiss0tql/article/details/81253823
===============f90调用ECCODES=============
注意:安装完成时候ECCODES_INCLUDE,$ECCODES_LIB这两个环境变量, -I, -L后面不能有空格。此外指定库名字为-leccodes_f90