使用 gfortran 链接库语法

2024-01-05

在 C++ 中,如果我想进行自定义编译(即链接其他库),我通常会执行以下操作:

g++ filename -o outputname -I/include_libraries_here -L/link_libraries_here -rpath=path_for_dynamic_linking_here 

我将如何使用 gfortran 来做类似的事情。我试过:

gfortran filename -o outputname -I/include_libraries_here -L/link_libraries_here -rpath=path_for_dynamic_linking_here 

到目前为止,语法 -I 和 -L 有效,这表明我成功链接并包含了这些库。但是,gfortran 似乎不将 rpath 识别为有效命令。

请告诉我并谢谢您。


您不必在链接期间使用 rpath。当然可以。

看看这里:

#include <stdio.h>

void fun() {
  printf("Hello from C\n");
}

我们可以像这样创建共享库:

gcc -fPIC -shared -o libfun.so fun.c

然后,我们可以编译以下代码:

program hello
  print *, "Hello World!"
  call fun()
end program hello

像这样:

# without -rpath
gfortran -fno-underscoring -o hello -L. -lfun hello.f90
# in this case you have to make sure libfun.so is in LD_LIBRARY_PATH

# with rpath
gfortran -fno-underscoring -o hello -L. -Wl,-rpath=`pwd` -lfun hello.f90
# in this case, library will be properly located at runtime

这将允许从共享库调用函数

./hello
 Hello World!
Hello from C

-rpath是ld的参数

-rpath=dir
           Add a directory to the runtime library search path.  This is used when linking an ELF executable with shared objects.  All -rpath arguments are concatenated
           and passed to the runtime linker, which uses them to locate shared objects at runtime.

有用的链接:

http://www.yolinux.com/TUTORIALS/LinuxTutorialMishingFortranAndC.html http://www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 gfortran 链接库语法 的相关文章

  • 使用 OpenCL 支持构建 OpenCV

    在 CMake 中 我使用 OpenCL Enable ON 构建了 OpenCV 它自动检测到OPENCL INCLUDE DIR路径但是OPENCL LIBRARY即使单击配置后也是空的 为了OPENCL LIBRARY我也没有看到浏览
  • 2017 年在 OS X 上从源代码构建 Apache Hadoop

    到目前为止 我已经分叉了 Git 存储库 https github com apache hadoop 我一直在寻找有关如何从源代码构建的信息 我尝试过以下命令 mvn package Pdist Dtar DskipTests 这导致了以
  • 为什么这个 C++ 包装类没有被内联掉?

    EDIT 我的构建系统出了问题 我还在弄清楚到底是什么 但是gcc产生了奇怪的结果 尽管它是 cpp文件 但是一旦我使用了g 然后它按预期工作 对于我一直遇到麻烦的事情来说 这是一个非常精简的测试用例 其中使用数字包装类 我认为会内联 使我
  • Fortran PURE 函数可以使用全局参数吗?

    在我看来 Fortran 中所谓的纯函数对于那些使用函数式编程的人来说似乎不够纯粹 这是我的问题 假设我有以下代码 MODULE basics IMPLICIT NONE INTEGER PARAMETER dp kind 1 0d0 RE
  • FORTRAN 写()

    在开始之前 我必须先声明一下 我是 FORTRAN 的新手 我正在维护 1978 年的一段遗留代码 它的目的是从文件中读取一些数据值 处理这些值 然后将处理后的值输出到另一个文本文件 给出以下 FORTRAN 代码 INTEGER NM S
  • limit 关键字在 gcc/g++ 中是否提供了显着的好处?

    有没有人见过关于是否使用 C C 的任何数字 分析restrictgcc g 中的关键字实际上在现实中 而不仅仅是理论上 提供了任何显着的性能提升 我读过各种推荐 贬低其使用的文章 但我还没有遇到任何实际数字可以证明双方的论点 EDIT 我
  • 如何使用 GCC 在 C 上编译库?

    我用这些文件创建了一个库pila h and pila c 我编译文件pila c with gcc pila c c这个库运行良好 我已经测试过了 然后我又做了一个图书馆 这个库有文件pila funciones extra h and
  • 使用动态链接器包装 glibc 函数

    我正在尝试包装 GLIBCfstat通过将我的库注入可执行文件来实现函数 可以是任何其他 这只是概念证明 我通过将我的库放置在可执行文件的位置来做到这一点RPATH用名字指着libc so 6 我的库的源代码如下 define GNU SO
  • 如何从java程序中编译.java文件[重复]

    这个问题在这里已经有答案了 可能的重复 从 Java 内部编译外部 java 文件 https stackoverflow com questions 10889186 compiling external java files from
  • 编译器 libstdc++ 版本与系统版本

    我试图了解 g 如何选择它链接的 libstdc 版本 以及当库的 系统 版本不同时它意味着什么 我正在使用 gcc g 4 1 2 根据ABI 指南 http gcc gnu org onlinedocs libstdc manual a
  • Fedora 21 带 clang,不带 gcc

    你能 合理地 让 Fedora 21 变得只有 llvm clang libc libc abi 吗 我发现有些东西暗示不可以 但它们都已经有 3 岁了 从那时起 llvm clang 已经取得了长足的进步 通过全新安装 我尝试了 yum
  • 指定 gfortran 应该在其中查找模块的目录

    我目前基于模块来编译程序 例如主程序foo这取决于模块bar 如下 gfortran c bar f90 gfortran o foo exe foo f90 bar o 当foo f90 and bar f90位于同一目录中 如何指定 g
  • 将数组从 .npy 文件读入 Fortran 90

    我使用 Python 以二维数组 例如 X 的形式生成一些初始数据 然后使用 Fortran 对它们进行一些计算 最初 当数组大小约为 10 000 x 10 000 时 np savetxt 在速度方面表现良好 但是一旦我开始增加数组的维
  • 在一条语句中对多个变量进行相同的赋值

    有没有一种方法可以为不同的变量分配相同的值 而无需在单个语句中构造数组 例如 如果我有变量a b c d and e 我可以分配类似的东西吗 a b c d e 10 0 我知道我可以用一行来做 a 10 0 b 10 0 c 10 0 d
  • 安装 OpenGL ES 并编译 Android 代码

    我刚刚开始在 android 上学习 OpenGL ES 使用这本书 https rads stackoverflow com amzn click com 1430226471 并遇到了采用的问题source http apress co
  • stringstream 不接受空格?

    我有以下代码 std stringstream ss ss lt lt 1 lt lt a b c std string result ss gt gt result std cout lt lt result lt lt std endl
  • Maven:从构建中排除测试

    我在项目的 src test java 文件夹中有一些类用作测试 当我使用标准 Maven 编译插件运行 Maven 时 这些项目被编译成 class 文件 并包含在打包编译代码的 jar 中 在运行 Maven 和构建我的版本之前 我已经
  • 使用 Java 文件中的代码编译 Java 文件

    我目前正在创建一个个人 也许是公共 java 终端 我想创建一个在执行时创建 编译 Java 文件的命令 但我不太确定如何实际执行此操作 是否可以 或者我只是在做梦 你也可以使用Groovy http groovy codehaus org
  • 可以读取目标文件吗?

    我很好奇 obj文件 我几乎不知道它们是什么 或者它们包含什么 所以我用 Vim 文本编辑器打开它们 我在里面发现了一种类似外星人的语言 有什么办法可以理解它们代表什么以及它们的内容是什么 另外 它们的用途是什么 Thanks Sure 但
  • 无法在 Windows 上使用 Gnustep 编译 Objective C

    嗨 我是初学者 学习目标c 我发现错误 hello m 1 34 Foundation Foundation h 没有这样的文件或目录 我开始知道我需要制作一个 make 文件 我可以知道如何制作 make 文件吗 无需创建 makefil

随机推荐

  • 捕获 OutOfMemoryException 使调试变得困难

    当我调试程序并尝试在立即窗口中执行某些操作时 有时会在立即窗口中显示一条错误消息 由于内存不足 函数评估被禁用 例外 它还显示 当通过将鼠标悬停在对象上来查看对象的属性时 在尝试找到问题的原因后 我将其范围缩小到这个小代码示例 using
  • 32 小时前 不包括周末 php

    所以我有一个脚本可以对 32 48 和 72 小时前进行多次检查 基本上我会检查数据库中至少 x 小时前的条目 现在效果很好 如下所示 date date Y m d H i s strtotime 32 hours q SELECT FR
  • 如何将MySQL表中的数据获取到Java JTable中?

    我正在开发 Java 项目 我需要将一组特定的数据加载到JTable 有人可以向我解释如何做到这一点吗 这些是我在名为 order processing 的数据库中的 mrnform 表中的字段 Date varchar 10 NOT NU
  • 如何设置 Windows 计划任务在后台运行? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有谁知道如何使用 Windows 任务计划程序设置计划任务在后台运行 似乎没有任何选择可以做到这一点 As noted https stackover
  • 尝试从安全站点生成 Web 服务客户端时出现奇怪的证书错误

    当尝试使用 AXIS1 4 Wsdl2Java 工具为安装在安全 IIS 站点上的 Web 服务生成客户端代码时 我收到一个奇怪的错误 当我运行该工具时 出现以下 SSL 异常 javax net ssl SSLHandshakeExcep
  • 如何在 Python 中将读取的大型 csv 文件分割成大小均匀的块?

    基本上我有下一个过程 import csv reader csv reader open huge file csv rb for line in reader process line line 看这个相关question https s
  • MATLAB 中的指南

    我正在尝试在 MATLAB 中构建一个程序 并且正在使用编辑框 但我希望用户输入的值稍后可以从另一个函数中使用 那么我应该使用global变量还是有其他方法 我试图定义global函数外部的变量但不起作用 我尝试在函数内部定义它 然后从另一
  • 计算 64 位(长、大)整数的位数?

    我已读完这个问题 https stackoverflow com questions 109023大约是 32 位数字 但是 64 位数字呢 我是否应该只屏蔽高位和低位 4 个字节 对 32 位执行计数 然后将它们加在一起 您可以在这里找到
  • Javascript 在调用 Ajax 之前等待图像加载

    function dropResource var imgIndex getImageIndexByID currentDragImageID var newImgID resourceData length Create the imag
  • iPhone - 将 UISegmentedControl 添加到导航控制器工具栏

    将 UISegmentedControl 添加到导航控制器工具栏是异端邪说吗 我正在考虑这段代码 UISegmentedControl segmentedControl UISegmentedControl alloc initWithIt
  • 如何锁定整个 SQLite 连接(锁定读 + 锁定写)?

    我有一个正在同时访问的 sqlite3 数据库 我有ClientA读取某个表的状态 Column1 有行A B C 并且需要用新的字母表来更新表格 如果ClientB读取之前表的状态ClientA更新表格 比如用新字母D 那么两个客户都有可
  • 如何在 Visual Studio 2015 中使用 C# 7?

    Visual Studio 2017 15 x 支持 C 7 但是 Visual Studio 呢2015 14 x 我如何使用 C 7 您可以通过安装 Nuget 包来替换 Visual Studio 附带的编译器以支持 C 7 版本Mi
  • 如何控制底板宽度?

    我需要一张底纸没有占据平板电脑上的所有宽度 但它忽略了layout widthxml 中的属性 我怎样才能做到呢 我的底表类 public class DetailsFragment extends BottomSheetDialogFra
  • BoxDecoration:DecorationImage 全屏背景图片

    根据颤动文档 https flutter io assets and images 我正在尝试使用 DecoratedBox 加载全屏图像作为容器的背景图像 我的 pubspec yaml 包含嵌入式资产的相关定义 flutter uses
  • 二叉搜索树中的下一个最大元素[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在寻找一种简单的算法来查找二叉搜
  • model.compile() 是否初始化 Keras(张量流后端)中的所有权重和偏差?

    当我开始训练模型时 之前没有保存任何模型 我可以用model compile 安全 我现在已将模型保存在h5文件以供进一步培训使用checkpoint 比如说 我想进一步训练模型 我现在很困惑 我可以使用model compile 这里 应
  • SQL“执行方式”登录命令和 Linq to SQL

    我正在尝试使用 执行为 命令作为另一个登录名来执行 SQL 查询 我正在使用 Linq to SQL 因此我生成了一个数据上下文类 并使用 ExecuteQuery 方法来运行 执行为 SQL 命令 然后我成功调用 Linq to SQL
  • LuaJ 和 Android:无法绑定类

    我目前正在使用 LibGDX 框架用 Java 编写游戏引擎 几个月来 我已经成功地将 LuaJ 3 0 与我的引擎一起使用 我在 Android 在两台设备上测试 或桌面 在 Eclipse 内外 上运行脚本没有任何问题 然而 今天当我尝
  • 顶级窗口、子窗口、对话框(模态)窗口和非对话框(无模式)窗口有什么区别?

    任何人都可以告诉我如何区分它们吗 我很难理解顶级子窗口与对话框 非对话框窗口的区别因素是什么 顶层窗口可以是对话框 非对话框窗口吗 子窗口可以是对话框 非对话框窗口吗 顶级表单归桌面所有 而子表单属于另一个表单 这意味着关闭或最小化所属表单
  • 使用 gfortran 链接库语法

    在 C 中 如果我想进行自定义编译 即链接其他库 我通常会执行以下操作 g filename o outputname I include libraries here L link libraries here rpath path fo