将gfortran编译的二进制文件分发给没有Xcode的Mac OS X用户?

问题描述 投票:1回答:1

我正在教一堂课,我希望学生在自己的笔记本电脑上运行预编译的命令行程序。有些学生有Windows;有些则有Windows。其他人有Mac。我能够创建一个独立的二进制文件,Windows用户可以将其放入其工作目录并运行。

[令我惊讶的是,我发现Mac用户要做同一件事要困难得多。特别是,似乎不可能用静态链接的所有必需库来编译独立的二进制程序。需要使用的特定库是libgfortran和libquadmath,因为gfortran编译器用于编译旧版F77代码(而且太大了,无法转换为另一种语言的程序)。

因此,到目前为止,我发现的唯一可能可行的解决方案是让学生先安装Xcode,然后再安装Xcode的命令行工具,最后在自己的计算机上安装gfortran,然后我的可执行文件将找到gfortran库并运行。但这对于我想要他们做的事情来说是太多的工作(和磁盘空间)。

我的问题:有什么办法可以使我以完全独立的形式编译程序?显然,我很难尝试,因为它涉及其他人的计算机。

编辑:我发现以下描述了相同问题的帖子:https://groups.google.com/forum/#!topic/comp.lang.fortran/TPEQQEwa0HI不幸的是,即使我删除了一些选项并进行了适当的替换,给出的解决方案对我也不起作用。

gfortran
1个回答
0
投票

您链接到的解决方案包括-static-libgfortran,但不包括-static-libgcc,因此可能值得添加其中的第二个。

有关准系统的Hello World代码,我得到:

[~] oldrabbit $ otool -L a.out 
a.out:
    /usr/local/opt/gcc/lib/gcc/8/libgfortran.5.dylib (compatibility version 6.0.0, current version 6.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
    /usr/local/lib/gcc/8/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/local/opt/gcc/lib/gcc/8/libquadmath.0.dylib (compatibility version 1.0.0, current version 1.0.0)
[~] oldrabbit $ gfortran -static-libgfortran -static-libgcc hello.f90 
[~] oldrabbit $ otool -L a.out 
a.out:
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
    /usr/local/opt/gcc/lib/gcc/8/libquadmath.0.dylib (compatibility version 1.0.0, current version 1.0.0)

看来libquadmath库可能仍然是一个问题。如果您可以找到该.a版本的路径,则可以尝试像在链接到的示例中那样包含它。

© www.soinside.com 2019 - 2024. All rights reserved.