博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux用命令行编译使用函数库
阅读量:5144 次
发布时间:2019-06-13

本文共 1669 字,大约阅读时间需要 5 分钟。

同步于气象家园日志
编译静态链接库
 
gfortran -c sub.f90 func.f90 
产生了func.mod文件。注:mod文件是静态库的接口。如果删掉了func.mod,编译时候会失败
 
打包创建一个静态链接库 my.lib
ar rv my.lib func.o sub.o 
 
 
使用静态链接库
编译
gfortran -c main.f90 产生main.o
 
链接
gfortran main.o my.lib -o exe
 
注:删掉静态链接库my.lib之后仍然可以执行可执行程序
------------------------------------------------------------------------------------------------
编译动态链接库

gfortran sub.f90 func.f90 -shared -fPIC -o libfcode.so

 
使用动态链接库
编译主程序
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

 gfortran ServeEraGribDataTemperature.f90 -I$ECCODES_INCLUDE/ -L$ECCODES_LIB/ -leccodes_f90

 

 

 

转载于:https://www.cnblogs.com/jiangleads/p/9461079.html

你可能感兴趣的文章
sqlite多表关联update
查看>>
xss---攻击
查看>>
java基础(六)--- list
查看>>
注解式struts2配合ajax
查看>>
自己写的一个 java swing 的闹钟
查看>>
OpenCV 中Scalar
查看>>
PHP 用Class构造JSON数据
查看>>
vue中js里的/* eslint-disable*/
查看>>
Git 代码更新:git fetch 和 git pull 的区别
查看>>
第4次作业-案例分析
查看>>
[转载]AMOLED结构详解,BOE专家给你分析驱动补偿
查看>>
动态调用web服务
查看>>
English trip -- VC(情景课)2 A At school
查看>>
English trip M1 - PC1 Are you a Model? 你是模特吗? Teacher:Taylor
查看>>
【MySQL运维实践】
查看>>
Wireshark抓取iPhone的数据包
查看>>
●BZOJ 2007 NOI 2010 海拔
查看>>
●BZOJ 4516 [Sdoi2016]生成魔咒
查看>>
H3C交换机配置命令(收集)
查看>>
HDFS简介
查看>>