【问题标题】:How to make a fortran executable that runs on Mac OS X 10.5 and 10.6如何制作在 Mac OS X 10.5 和 10.6 上运行的 fortran 可执行文件
【发布时间】:2009-11-12 22:06:36
【问题描述】:

我想用 gfortran 编译一个 fortran 代码,这样它就可以在 Mac OS X 10.5 和 10.6 上运行。有没有办法做到这一点?我尝试在 10.6 上编译并在 10.5 上运行可执行文件时收到此消息:

dyld:未知所需的加载命令 0x80000022 跟踪/BPT 陷阱

【问题讨论】:

    标签: macos fortran gfortran


    【解决方案1】:

    您使用的是 10.5 的哪个版本?根据this (0x22) 是在 10.5.6 中添加的动态加载功能。您可以尝试升级到 >10.5.6,看看问题是否仍然存在。

    另外,您的 gfortran 是从哪里获得的?在 numpy 社区中,强烈推荐来自att.com 的构建,来自hpc 的构建通常是avoided

    【讨论】:

    • 我同意在 HPC 中避免使用编译器的建议。如果不给文件不同的名称,将非 Apple gcc 放在 /usr/local 是危险的。但是 att.com 上的 gfortran 是 4.2 版,已过时。 gfortran 4.3 和 4.4 版本进行了改进,并具有额外的语言功能。我建议从 MacPorts 获取 gfortran,它包含在 gcc43 和 gcc44 包中。更多“前沿”:gfortran Wiki 页面上提供了最新版本的 4.5(测试版)。
    • 感谢您的提示。没有意识到要避免使用 hpc!从 att 尝试了 4.2 版本并出现此错误: dyld: Library not loaded: /usr/local/lib/libgfortran.2.dylib 经过一番折腾,我发现我可以让我的旧编译器 ifort 11.0 到使用标志 -mmacosx-version-min=10.4。我对 gfortran 进行了同样的尝试,但仍然出现原始错误。让 gfortran 生成一个可移植的可执行文件会很好,但至少我现在可以让 ifort 这样做。
    • 使用 ifort,选项“-static-intel”可能会有所帮助——这会将 intel 库静态链接到可执行文件中,从而消除对 intel 提供的动态库的依赖。但它不会解决非英特尔动态库的任何问题。
    • @M.S.B. - 我知道 att 有点过时了,但 macports 通常没有苹果特定的 mods(-arch、-isysroot 等)。无论如何,雪豹只使用相同的版本(gcc 4.2),所以我认为称它为过时有点强 - 在苹果世界中事情进展缓慢;)
    • gfortran 与 gcc 的其他部分不同——它从 4.0 版开始。 4.3 和 4.4 有许多额外的语言特性,例如非常有用的 ISO C 绑定。
    【解决方案2】:

    在 OS X 10.6 机器上为 10.5 机器错误地构建了该应用程序。开发人员可以通过考虑三件事来解决此问题:

    Using the correct compiler parameters:
    gcc-4.2 -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk ...
    
    Using the correct linker settings (setting environment variable before link command). This is required, so that the OS X 10.6 linker will not use the loader command 'LC_DYLD_INFO_ONLY' (=0x80000022), because OS X 10.5 does not understand this command:
    
    export MACOSX_DEPLOYMENT_TARGET=10.5
    (or   setenv MACOSX_DEPLOYMENT_TARGET=10.5)
    

    修复此问题后,可以通过运行“otool”检查应用程序是否为 OS X 10.5 正确构建:

    otool -l 二进制

    正确的二进制文件不应包含任何“LC_DYLD_INFO_ONLY”加载命令(仅“LC_DYLD_INFO”命令)。

    (另见我的博文http://grauonline.de/wordpress/?p=71

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 2016-12-27
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多