PSIPRED Makefile“系统找不到指定的文件”

时间:2020-08-07 16:41:57

标签: makefile gnu-make

我正在尝试在Windows 10计算机上下载PSIPRED。将Git存储库克隆到我的计算机中,并下载了用于编译PSIPRED代码的GNU Make 3.81。根据安装说明,我应该在命令提示符中运行以下命令进行编译,然后将其放入bin文件夹中。

cd to-psipred-directory
cd src
make
make install

但是,当我运行它时,出现错误:

cc -O sspred_avpred.c -lm -o psipred
process_begin: CreateProcess(NULL, cc -O sspred_avpred.c -lm -o psipred, ...) failed.
make (e=2): The system cannot find the file specified.
make: *** [psipred] Error 2

这是psipred MAKEFILE的内容:

######################################################################
#   Makefile for PSIpred4                                        #
######################################################################

#### CC     Command to execute C compiler
#### CFLAGS Flags to pass to C compiler.

INCDIR      = .
CC      = cc

CFLAGS      = -O
LIBS        = -lm

all:        psipred psipass2 chkparse seq2mtx

install:
        /bin/cp psipred psipass2 chkparse seq2mtx ../bin

clean:
        /bin/rm -f psipred psipass2 chkparse seq2mtx

psipred:    sspred_avpred.c ssdefs.h sspred_net.h
        $(CC) $(CFLAGS) sspred_avpred.c $(LIBS) -o psipred

psipass2:   sspred_hmulti.c ssdefs.h sspred_net2.h
        $(CC) $(CFLAGS) sspred_hmulti.c $(LIBS) -o psipass2

chkparse:   chkparse.c
        $(CC) $(CFLAGS) chkparse.c $(LIBS) -o chkparse

seq2mtx:    seq2mtx.c
        $(CC) $(CFLAGS) seq2mtx.c $(LIBS) -o seq2mtx

如何使它正常工作?

1 个答案:

答案 0 :(得分:0)

PSIPRED是针对类似UNIX的操作系统(例如Linux或macOS)的工具,其工具具有此类系统的常规名称。 Windows是完全不同的野兽。

您的构建尝试当前遇到的特定问题似乎是C编译器的名称。假设您的系统首先存在一个系统(例如,在Visual Studio中),则系统名称不为cc,或者在可执行的搜索路径中找不到该系统。但是,这并不是尝试在Windows上使用该makefile的唯一问题。

原则上,应该有可能使程序适应Windows,但这不仅需要获取GNU Make,还需要花费更多的时间来更新Makefile中的工具名称(但是谁知道呢? ,您可能会很幸运!)。

  • 通过安装Linus Windows子系统(WSL)并在其中构建和运行该程序,您获得成功的可能性最大,但这并不像听起来那么简单。另外,如果成功,结果将只在您的WSL容器内运行,这可能无法满足您的需求。

  • 您可以安装Cygwin或MinGW,它们可以采用不同的方法在本机Windows中提供类似Unix的环境。在这些环境之一中,您(可能)可以构建程序,并且可以在宿主Windows计算机上本地运行该程序。这也不像听起来那样容易,但这是一种相当普遍的方法。

  • 原则上,您可以将软件移植到Windows,以便可以使用本机Windows构建工具(例如Visual Studio)进行构建。实际上,对于大多数Unix程序而言,这绝对是不重要的。

  • 当然,您还可以设置一台成熟的Linux机器,用于在其上构建和运行该程序。尽管这需要更多资源,但这可能是总体上最简单的方法。