【问题标题】:gfortran not running on OSX dyld: Library not loaded: @rpath/libgfortran.3.dylibgfortran 未在 OSX dyld 上运行:未加载库:@rpath/libgfortran.3.dylib
【发布时间】:2020-12-08 15:30:45
【问题描述】:

我已经安装了 miniconda3 gfortran 并在 .bash_profile 中将 DYLD_FALLBACK_LIBRARY_PATH 设置为 /miniconda3/lib。我已经阅读了许多其他答案,但似乎没有任何效果。

gfortran --version
GNU Fortran (GCC) 4.8.5

运行时错误是

dyld: Library not loaded: @rpath/libgfortran.3.dylib
  Referenced from: /Users/Liza/Desktop/family/xmas/./a.out
  Reason: image not found

【问题讨论】:

  • 欢迎您,请拨打tour。如果其他问题和答案不适用,您真的必须向我们提供更多详细信息。他们究竟是如何“不工作”的?如果您想要不同的答案,您必须告诉我们您的情况有何不同。 libgfortran.3.dylib 到底在你的电脑上的什么位置?
  • 我很乐意回答您的问题并提供更多详细信息,但实际上您的回复已经很快指出了问题所在。我在 .bash_profile 中提供了不正确的 libgfortran.3.dylib 路径。非常感谢!问题解决了。我不再收到运行时错误。

标签: conda gfortran macos-catalina


【解决方案1】:

无需设置DYLD_FALLBACK_LIBRARY_PATH 即可在Conda 环境中使用Fortran 编译器,尤其是无需通过.bash_profile 在用户级别设置它。

使用 Conda Forge Fortran 编译器堆栈创建环境:

conda create -n foo -c conda-forge fortran-compiler

然后可以在激活时看到环境自动处理更新适当的标志以获取envs/foo/lib 和envs/foo/include 目录:

(base) $ conda activate foo
(foo) $ env | grep -E "^(FORTRAN|LD)"
LDFLAGS=-Wl,-pie -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,/Users/mfansler/miniconda3/envs/foo/lib -L/Users/mfansler/miniconda3/envs/foo/lib
LD=x86_64-apple-darwin13.4.0-ld
FORTRANFLAGS=-march=core2 -mtune=haswell -ftree-vectorize -fPIC -fstack-protector -O2 -pipe -isystem /Users/mfansler/miniconda3/envs/foo/include
LDFLAGS_LD=-pie -headerpad_max_install_names -dead_strip_dylibs -rpath /Users/mfansler/miniconda3/envs/foo/lib -L/Users/mfansler/miniconda3/envs/foo/lib

对于一般工作流程,我建议创建一个 YAML 文件,其中包含您需要的所有依赖项,例如,

fortran-env.yaml

channels:
  - conda-forge
  - defaults
dependencies:
  - fortran-compiler
  - zlib  # example dependency

然后从这个 (conda env create -f fortran-env.yaml) 创建一个环境,在编译项目时激活它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-22
    • 2016-05-24
    • 2017-04-20
    • 2016-05-29
    • 2016-10-27
    • 2015-12-22
    相关资源
    最近更新 更多