梦里້໌ᮨ 2024-03-12 12:28 采纳率: 55.6%
浏览 9

在WIndows(64位计算机)上使用Cygwin安装bedtools时出错

我正在尝试通过Cygwin安装bedtools v2.31.1。以下是我尝试过的命令:

$ wget https://github.com/arq5x/bedtools2/releases/download/v2.31.1/bedtools-2.31.1.tar.gz

$ tar -zxvf bedtools-2.31.1.tar.gz

$ cd bedtools2

$ make

在运行最后一个命令时,我得到以下错误:

src/utils/BamTools/include/SamHeader.hpp:108:41: error: ‘strdup’ was not declared in this scope; did you mean ‘strcmp’?

108 | _header->text = strdup(text.c_str());

| ^~~~~~

| strcmp

如图所示:

img

请问应该怎么处理?感谢您的帮助!

  • 写回答

4条回答 默认 最新

  • 关注

    梦里້໌ᮨ 中午好🌞🌞🌞
    本答案参考ChatGPT-3.5

    在安装bedtools时出现的错误表明缺少strdup函数的声明。这可能是因为使用了不兼容的C++标准造成的。

    为了解决这个问题,你可以尝试以下几个解决方案:

    1. 修改源代码:打开src/utils/BamTools/include/SamHeader.hpp文件,将第37行和第108行的strdup函数替换为_strdup,然后保存文件。然后重新运行make命令。这个修改会将strdup函数替换为Windows下的兼容函数_strdup,可以解决这个问题。

    2. 修改编译选项:使用编辑器打开Makefile文件,在CXXFLAGS中添加-D_GNU_SOURCE选项,然后保存文件。这个选项会指定使用GNU标准,可能会解决缺少strdup声明的问题。

    3. 使用MSYS2替代Cygwin:Cygwin是在Windows上为了提供类似于UNIX环境而开发的工具,但是有时候可能会遇到一些兼容性问题。你可以考虑使用MSYS2作为替代,它也提供了类似的UNIX环境,并且在Windows上的兼容性更好。

    4. 尝试使用预编译的可执行文件:如果以上方法都无法解决问题,你可以尝试从bedtools的发布页面下载编译好的预编译可执行文件,而不是从源代码进行编译。

    注意:在尝试以上解决方案之前,你可能需要先卸载已经安装的bedtools,然后重新进行操作。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月12日

悬赏问题

  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画
  • ¥15 TeleScan不能修改bar
  • ¥100 请问我基于逐飞库写的这个有关于mp u6050传感器的函数,为什么输出的值是固定的?
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息
  • ¥15 Spring Boot离线人脸识别
  • ¥15 使用Ant Design Pro vue的时候,使用环境变量的时候,构建报错是什么原因