0

我是 stackflow 的新手,以前我没有计算机系统和编程方面的背景。但是,现在我需要在 cygwin 下为我的生物信息学项目运行分析。当我尝试使用 cygwin 编译文件名“zone_b.linux”以生成可执行程序时遇到一些错误。linux 文件是从网站https://github.com/haddocking/HADDOCK-binding-sites-tutorial/blob/master/ana_scripts/zone_b.linux下载的。当我尝试在 cygwin 下使用以下命令进行编译时,会产生以下错误:

$ gcc zone_b.linux
/usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../libcygwin.a(libcmain.o): In 
function `main':
/usr/src/debug/cygwin-2.9.0-3/winsup/cygwin/lib/libcmain.c:37: undefined 
reference to `WinMain@16'
collect2: error: ld returned 1 exit status

错误描述

我在stackoverflow下搜索了以下错误,我发现了两个类似问题的帖子。

首先是未定义引用的帖子 `WinMain@16'。它指出问题是由于微软的链接器使用了一个运行时库入口点(winMainCRTStartup),它调用了微软的非标准 WinMain 而不是标准的 main。所以,我尝试了帖子的建议,即通过以下命令包含条目

$ gcc zone_b.linux /entry:winMainCRTStartup
gcc: error: /entry:winMainCRTStartup: No such file or directory

但是我得到错误没有这样的文件或目录。我想可能是因为我在 cygwin 而不是 mingW 下运行。

第二篇文章是Cygwin 中对 WinMain 的未定义引用。从帖子中,它说使用 -c 编译标志只生成目标文件。但是,就我而言,我没有使用任何-c。因此,我认为这与我的问题无关。

如果有人能向我解释一下,我将不胜感激,因为我是这个计算领域的新手。谢谢你。

4

1 回答 1

1

zone_b.linux是在 linux 机器上运行的编译和链接的可执行程序。它是一个 32 位 ELF 二进制文件。即使使用 cygwin 或 mingw32,它也无法在 Windows 机器上运行,无需重新计算。

您可能必须编译zone_b.f一个 FORTRAN 源文件,使用 gfortran 编译器创建一个zone_b.exe可在 cygwin 中使用的文件。我没有看到这方面的说明,但尝试使用gcc zone_b.f交叉手指之类的方法。确保使用 cygwin 安装程序安装了 gfortran。

您还需要通过在目录中执行来(重新)构建其他可执行文件(cluster_struccontact) 。任何提供的可执行文件(来自或下载的文件)都不能在 cygwin 下运行。makeana_scriptsgit clone ....zip

您将需要拥有perlpython安装。我认为perl是默认安装的。您可以使用 cygwin 安装程序安装 python2。python 脚本看起来可以与 python2 或 python3 一起使用,以默认值为准。今天在cygwin上,python2是默认的python。我不这样做perl,所以交叉手指。

于 2017-11-27T21:06:01.540 回答