Linux 下的未定义引用WinMain@16在锡温

Linux 下的未定义引用WinMain@16在锡温,linux,gcc,compilation,cygwin,winmain,Linux,Gcc,Compilation,Cygwin,Winmain,我是stackflow的新手,以前我没有计算机系统和编程方面的背景。然而,现在我需要在cygwin下为我的生物信息学项目运行分析。当我试图使用cygwin编译文件名“zone_b.linux”以生成可执行程序时,遇到了一些错误。linux文件是从web下载的。当我尝试在cygwin下使用以下命令进行编译时,会产生以下错误: $ gcc zone_b.linux /usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../libcygwin.a(libcmain.o):

我是stackflow的新手,以前我没有计算机系统和编程方面的背景。然而,现在我需要在cygwin下为我的生物信息学项目运行分析。当我试图使用cygwin编译文件名“zone_b.linux”以生成可执行程序时,遇到了一些错误。linux文件是从web下载的。当我尝试在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下搜索了以下错误,发现了两篇有类似问题的帖子

首先是来自中国的帖子。它指出问题是由于Microsoft的链接器使用运行时库入口点WinMainCrtStartup调用Microsoft的非标准WinMain而不是标准main。因此,我尝试了post的建议,通过以下命令包含条目

$ gcc zone_b.linux /entry:winMainCRTStartup
gcc: error: /entry:winMainCRTStartup: No such file or directory
但是我得到的错误是没有这样的文件或目录。我想可能是因为我是在cygwin而不是mingW的领导下跑步

第二个帖子是。在文章中,它说使用-c编译标志只生成对象文件。然而,对于我的情况,我没有使用任何-c。因此,我认为这与我的问题无关

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

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

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

您还需要通过在ana_scripts目录中执行make来重新构建其他可执行文件cluster_struc和contact。从git克隆提供的任何可执行文件。。。或者下载的.zip文件在cygwin下无法工作


您需要安装perl和python。我认为perl是默认安装的。您可以使用cygwin安装程序安装python2。python脚本看起来将与python2或python3一起使用,以默认值为准。今天,在cygwin上,python2是默认的python。我不做perl,所以请大家祈祷。

zone_b.linux是用哪种语言编写的?文件zone_b.linux将为您提供感谢Doug Henderson的回复。我已经尝试在ubuntu上运行zone_b.linux。在这里,我运行source.csh命令并生成zone_b.exe。但是,即使是可执行区域_b也会产生错误,并且未找到区域_b命令。即使在我执行chmod a+x zone_b之后。脚本没有响应。我还尝试编译zone_b.f,但是它也会产生错误。我已在此帖子下发布错误: