【问题标题】:How do I install primer3 on windows?如何在 Windows 上安装primer3?
【发布时间】:2019-03-06 21:44:45
【问题描述】:

问题:

我需要安装Primer3,这是一种广泛使用的生物工具,可以让人们设计引物。

尝试解决:

我试图关注他们的instructions for a Windows installation 无济于事,因为它似乎没有提供足够的信息。无论如何,我都不是经验丰富的程序员。到目前为止,我还参考了this stack overflow post 关于类似问题并尝试遵循建议的答案。我还简要地看了thread in their github repository,虽然我不能真正理解他们在里面说什么。就我从命令终端(mingw32 版本)获得的输出而言,似乎没有任何效果:

C:\Users\mqian\Desktop\CGIProject\primer3-2.4.0\primer3-2.4.0\test>mingw32-make
TESTOPTS=--windows
cd ..\src & mingw32-make
mingw32-make[1]: Entering directory 'C:/Users/mqian/Desktop/CGIProject/primer3-2
.4.0/primer3-2.4.0/src'
g++ -c -g -Wall -D__USE_FIXED_PROTOTYPES__ -O2  masker.c
masker.c:8:22: fatal error: sys/mman.h: No such file or directory
compilation terminated.
Makefile:226: recipe for target 'masker.o' failed
mingw32-make[1]: *** [masker.o] Error 1
mingw32-make[1]: Leaving directory 'C:/Users/mqian/Desktop/CGIProject/primer3-2.
4.0/primer3-2.4.0/src'
Makefile:94: recipe for target 'makeexes' failed
mingw32-make: *** [makeexes] Error 2

如果我只是尝试在 src 文件夹中运行 make:

C:\Users\mqian\Desktop\CGIProject\primer3-2.4.0\primer3-2.4.0\src>mingw32-make
g++ -c -g -Wall -D__USE_FIXED_PROTOTYPES__ -O2  masker.c
masker.c:8:22: fatal error: sys/mman.h: No such file or directory
compilation terminated.
Makefile:226: recipe for target 'masker.o' failed
mingw32-make: *** [masker.o] Error 1

就所需的软件或软件包而言,这是我缺少的东西吗?他们的makefile被窃听了吗?任何帮助,将不胜感激。

附:这是他们在 sourceforge 上的下载站点的link。我使用的是 2.4.0 版。

【问题讨论】:

  • 这个 SO 问题有帮助吗:Windows Equivalent for sys/mman.h?
  • 并非如此。我的编译知识并没有那么远,所以我不太明白他们在说什么。谢谢你的尝试!
  • 简而言之:包含文件sys/mman.h 提供的功能在Windows 上本身不可用,并且不容易解决。看起来这是在 v2.4.0 的primer3 代码库中引入的,查看 v2.3.7 的源代码似乎还没有出现。所以也许你应该尝试构建 v2.3.7,如果该版本是可以接受的。

标签: windows command-line makefile mingw32 primer3


【解决方案1】:

我能够在 Windows 上这样构建它(将 /usr/local 替换为您要安装的路径):

在 MSYS2 下使用 https://github.com/witwall/mman-win32/releases 构建 mman-win32:

./configure --prefix=/usr/local --cc=gcc --enable-static --enable-shared &&
make &&
mkdir -p /usr/local/include/mman-win32/sys /usr/local/lib &&
cp -f *.h /usr/local/include/mman-win32/sys/ &&
cp -f *.a /usr/local/lib/ &&
echo Success

然后从https://github.com/primer3-org/primer3/releases构建primer3:

mv src/masker.c src/masker.c.bak
cat > src/masker.c << EOF
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define GETLINE_BUFLEN 128
static ssize_t getline(char** lineptr, size_t* n, FILE* stream)
{
  char* bufptr;
  char* p;
  ssize_t size;
  int c;
  if (!lineptr || !n || !stream)
    return -1;
  bufptr = *lineptr;
  size = *n;
  c = fgetc(stream);
  if (c == EOF)
    return -1;
  if (!bufptr) {
    if ((bufptr = (char*)malloc(GETLINE_BUFLEN)) == NULL)
      return -1;
    size = GETLINE_BUFLEN;
  }
  p = bufptr;
  while (c != EOF) {
    if ((p - bufptr) > (size - 1)) {
      size = size + GETLINE_BUFLEN;
      if ((bufptr = (char*)realloc(bufptr, size)) == NULL)
        return -1;
    }
    *p++ = c;
    if (c == '\n') {
      break;
    }
    c = fgetc(stream);
  }
  *p++ = 0;
  *lineptr = bufptr;
  *n = size;
  return p - bufptr - 1;
}
EOF
cat src/masker.c.bak >> src/masker.c
make -Csrc install PREFIX=/usr/local CC_OPTS="-I/usr/local/include/mman-win32" LDLIBS="-Wl,--as-needed -lmman" &&
echo Success

【讨论】:

    猜你喜欢
    • 2016-10-09
    • 2013-08-25
    • 2016-04-19
    • 2023-03-21
    • 2011-01-25
    • 2012-09-11
    • 2018-01-15
    • 2012-03-18
    • 2017-05-20
    相关资源
    最近更新 更多