同步于气象家园日志
编译静态链接库
 
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

linux用命令行编译使用函数库的更多相关文章

  1. Linux中命令行编译java接口总是提示找不到符号的疑难杂症的解决

    今天学习java的接口,在linux的命令行下写代码练练手吧,啪啪啪一顿猛敲,写了一个接口UsbInserface,UDisk继承UsbInterface,写完了那就编译到bin目录呗. 当时写程序的 ...

  2. Linux java 命令行编译 jar包

    Java 命令行编译成class,然后在打包成jar文件. 编译成class javac -classpath $CLASS_PATH -d class ./src/Hello.java 可以通过ja ...

  3. 自学Linux Shell16.4-在命令行上使用函数

    点击返回 自学Linux命令行与Shell脚本之路 16.4-在命令行上使用函数 脚本函数不仅可以用作shell脚本命令,也可以用作命令行界面的命令.一旦在shell中定义了函数,可以从系统的任意目录 ...

  4. 【linux基础】使用命令行编译运行c++程序

    前言 在linux系统运行程序,小鹅知道的有3种编译方式,一种是直接命令行编译,一种是使用Cmake,一种是使用脚本文件(*.sh).本文介绍的是使用命令行编译. 使用过程 注意不同系统的编译器版本可 ...

  5. Delphi的命令行编译命令

    Borland出品的Delphi,有着闪电般的编译速度,但是在界面控件使用较多.工程项目较大的时候,编译一个工程仍需要一段时间,打开庞大的Delphi IDE,也需要时间.其实,在一个工程开发结束,调 ...

  6. Java 命令行编译项目

    如果是用Exlipse, 第三方的包可以放在eclipse文件夹的jre包的lib文件夹中! (初学者的一些总结-高手们勿喷哈-) 原因: 以前一直用Eclispe编程环境运行Java.非常舒服,就像 ...

  7. LibOpenCM3(一) Linux下命令行开发环境配置

    目录 LibOpenCM3(一) Linux下命令行开发环境配置 本文使用 Linux 环境, 硬件为 STM32F103 系列开发板 LibOpenCM3 介绍 LibOpenCM3 是GPL协议( ...

  8. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

  9. 28个Unix/Linux的命令行神器_转

    28个Unix/Linux的命令行神器 下面是Kristóf Kovács收集的28个Unix/Linux下的28个命令行下的工具,有一些是大家熟悉的,有一些是非常有用的,有一些是不为人知的.这些工具 ...

随机推荐

  1. Hadoop HBase概念学习系列之HBase里的Client(二十二)

    这个,很简单,但凡是略懂大数据的,就很清楚,不多说,直接上图.

  2. Spring Boot 以 war 方式部署

    Spring Boot 默认自带了一个嵌入式的 Tomcat 服务器,可以以jar方式运行,更为常见的情况是需要将 Spring Boot 应用打包成一个 war 包,部署到 Tomcat.Jerry ...

  3. npm install --save 和 --save-dev的区别

    --save 会把依赖包名称添加到 package.json 文件 "dependencies" 键下--save-dev 则添加到 package.json 文件 "d ...

  4. #001 如何组织JS代码

    如何组织JS代码 有没有这样的经历,在编写代码的时候,因为功能简单,写的时候比较随意,所有的JS代码都放在一个文件里面,但是随着功能的增加,发现代码很乱,不好维护. 简单的整理了一下,目前对已有项目的 ...

  5. jQuery实现简易轮播图的效果

    (图片素材取自于小米官网) 刚开始接触jQuery的学习,个人觉得如果为了实现多数的动态效果,jQuery的确很简易方便. 下面简易的轮播图效果,还请前辈多多指教~ (努力学习react vue an ...

  6. easyui 对form扩展

    功能描述 easyui 中  combobox 多选赋值方法如下: $('#cbx').combobox('setValues', ['01','02']) 然而,业务中是以  “01,02” 的形式 ...

  7. 解决django配合nginx部署后admin样式丢失

    解决django配合nginx部署后admin样式丢失 1.  在项目的settings.py文件里添加以下内容: STATIC_URL = '/static/' STATICFILES_DIRS = ...

  8. glusterfs分布式文件系统

    第一:安装依赖包: yum install libibverbs librdmacm xfsprogs nfs-utils rpcbind libaio liblvm2app  lvm2-devel ...

  9. kong安装

    1 哪些企业在用KONG: Mashapoe Marketplace Buzzlogix Gengo IBM Intel OpenDNS 饿了么 Kong可与两种不同的组件协同工作: Nginx:Ko ...

  10. pagination分页(支持首页,末页,跳转)

    最近在用jq做分页,大致的效果如下: jquery.pagination.js插件说明 用法如下: 1.引入jq.jquery.pagination.js.pagination.css 2.在页面上写 ...