【问题标题】:How can I setup linux to compile FORTRAN code into windows binaries?如何设置 linux 将 FORTRAN 代码编译成 Windows 二进制文件?
【发布时间】:2011-10-24 13:57:28
【问题描述】:

我正在处理一个 FORTRAN 项目,我想在专用于自动构建的 linux 机器上构建我想要维护的所有二进制文件。我已成功使用 mingw 从 C 源代码为 linux 机器上的 windows 机器构建 32 位和 64 位二进制文​​件,并在 Ubuntu 上使用以下软件包。

apt-get install mingw32
apt-get install mingw-w64

然后我运行以下命令来实际编译:

gcc -b amd64-mingw32msvc -V 4.4.4 -o <...other options>

但是,我通过 apt-get 获得的 mingw 包不包含 FORTRAN 编译器。

有人对我能做什么有任何想法吗?

【问题讨论】:

  • 只是看看我是否清楚 - 你想在 linux 机器上制作一个 windows 二进制文件。正确的?由于您无法在 *nix 机器上运行(检查一切是否正常)win exe,那么这样做的目的是什么?
  • @Rook:大概是 OP 在 Linux 上设置了他/她的开发环境,熟悉 Linux 工具等。这是否足以弥补交叉编译与本机编译的麻烦窗户例如在虚拟机中是另一个主题。
  • @Rook:我正在使用自动构建系统(在专用机器上)并希望交叉编译以将构建过程保持在同一台机器上(而不是试图委托给其他专用物理机或虚拟机)。我已编辑我的帖子以反映此信息。

标签: windows linux mingw fortran cross-compiling


【解决方案1】:

如果你有 mingw32 并且 Gnu C 交叉编译器正在为你工作......那为什么不直接使用 Gnu Fortran 交叉编译器呢?

http://www.nber.org/sys-admin/mingw32-fortran-fedora.html

EXAMPLE apt-get install mingw32-gcc-fortran

【讨论】:

  • 因为 Debian 不为此提供软件包。
【解决方案2】:

我知道这是一个老话题,但有些事情似乎已经改变,人们可能仍然对该主题感兴趣。

问题:我想用我的 linux 机器编译一些代码并创建一个 .exe,我可以发送给使用 Windows 的人。

解决方案:基本上在这里:http://mxe.cc/

我做了什么:

  • 检查你的系统是否有你需要的所有软件here
  • 运行

git clone -b stable https://github.com/mxe/mxe.git

它将下载一些小东西并创建目录“mxe”(可能在您的主文件夹中)

  • cd 进入那个 mxe 目录并运行“make”。但是:这将花费数小时并在您的硬盘驱动器上占用几 GB,因此请运行类似

    make mpfr eigen opencsg cgal qt

有关如何缩短所有内容的更多想法,请参阅this 或 mxe 教程或其他地方;)

  • 编译东西的最简单方法似乎是这样的:

    ~/mxe/usr/bin/i686-pc-mingw32-gfortran -c main.f95

    ~/mxe/usr/bin/i686-pc-mingw32-gfortran main.o -o outfile.exe

当然你可以选择除 fortran 以外的其他东西,只要参考 mxe/usr/bin 看看它叫什么。

【讨论】:

  • 与论坛不同,stackoverflow 没有主题,只有问题和答案
【解决方案3】:

您始终可以从 MinGW(-w64) 项目本身下载并安装预构建的编译器:

Windows 64 位:http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/rubenvb/4.6.2-1/ Windows 32 位:http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/4.6.2-1/

只需在某处解压并将cross*/bin 目录添加到PATH。

我包括 (obj)c(++) 和 fortran。

【讨论】:

  • 我最终从sourceforge.net/projects/mingw-w64/files/… 下载了其中一个自动化构建。具体来说,我下载了 mingw-w64-1.0-bin_x86_64-linux_20110808.tar.bz2 以获得 64 位支持。我还将获得 32 位版本。但是这个解决方案对我有用,谢谢!我希望有一个不错的 Debian 软件包...
  • Captain:请注意,该软件包包含一个通用构建,不支持 Graphite 循环优化,以及(我认为)GCC 4.5。为什么不向包维护者发送功能请求?
【解决方案4】:

在 Ubuntu 18.04 上我使用

apt install gfortran-mingw-w64

然后使用编译器x86_64-w64-mingw32-gfortran 代替gfortran。如果你使用 cmake,你可以像这样从构建目录配置编译器:

FC=x86_64-w64-mingw32-gfortran cmake ..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    相关资源
    最近更新 更多