zoukankan      html  css  js  c++  java
  • linux用命令行编译使用函数库

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

  • 相关阅读:
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    PHP中foreach用法详细讲解
  • 原文地址:https://www.cnblogs.com/jiangleads/p/9461079.html
Copyright © 2011-2022 走看看