如何设置linux将FORTRAN代码编译成windows二进制文件?

时间:2011-08-11 00:51:47

标签: windows linux mingw fortran cross-compiling

我正在开发一个FORTRAN项目,我想在一台专门用于自动构建的linux机器上构建我想要维护的所有二进制文件。我已成功使用 mingw 从Linux机器上的Windows机器的C源代码构建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编译器。

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

4 个答案:

答案 0 :(得分:3)

如果你有mingw32并且Gnu C交叉编译器正在为你工作...为什么不只是获得Gnu Fortran交叉编译器呢?

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

EXAMPLE apt-get install mingw32-gcc-fortran

答案 1 :(得分:3)

我知道这是一个旧帖子,但有些事情似乎发生了变化,人们可能仍然对这个主题感兴趣。

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

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

我做了什么:

  • 检查您的系统是否包含所需的所有软件here
  • 运行

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

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

  • 进入该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来查看它的名字。

答案 2 :(得分:1)

您始终可以从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。

答案 3 :(得分:0)

在Ubuntu 18.04上我使用

apt install gfortran-mingw-w64

然后使用编译器x86_64-w64-mingw32-gfortran代替gfortran。如果您正在使用cmake,则可以从构建目录配置编译器,如下所示:

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