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

  • 相关阅读:
    webdav srs相关
    How To Configure WebDAV Access with Apache on Ubuntu 14.04
    ubuntu 编译lighttpd
    srs编译及推流测试
    Compile pciutils (lspci, setpci) in Windows x86,在 Windows x86 平台下编译 pciutils (lspci, setpci)
    mingw MSYS2 区别
    Qt之美(三):隐式共享
    Qt之美(二):元对象
    Qt之美(一):d指针/p指针详解
    C++的栈空间和堆空间
  • 原文地址:https://www.cnblogs.com/jiangleads/p/9461079.html
Copyright © 2011-2022 走看看