无法将'bool'转换为'gzFile {aka gzFile_s *}'

时间:2017-02-28 14:35:46

标签: c++ vcftools

我是Linux环境的新手,并尝试安装生物信息学软件包(vcftools - https://vcftools.github.io/examples.html)。出于某种原因,我可以在Cygwin环境中编译没有问题,其他同事已经安装了包没有故障,但如果我尝试在同一台计算机上的VirtualBox中的Ubuntu环境中编译,我会收到错误(如下所示)。我收到以下错误。有没有人有关于如何解决此错误的建议?

$ make install

输出

Installing VCF tools
make[1]: Entering directory '/home/wde/selt/selectionTools/vcftools_0.1.11/cpp'
g++ -c -O2 -D_FILE_OFFSET_BITS=64  vcftools.cpp -o vcftools.o
g++ -MM -O2 -D_FILE_OFFSET_BITS=64  vcftools.cpp > vcftools.d
g++ -c -O2 -D_FILE_OFFSET_BITS=64  bcf_file.cpp -o bcf_file.o
g++ -MM -O2 -D_FILE_OFFSET_BITS=64  bcf_file.cpp > bcf_file.d
g++ -c -O2 -D_FILE_OFFSET_BITS=64  vcf_file.cpp -o vcf_file.o
vcf_file.cpp: In constructor ‘vcf_file::vcf_file()’:
**vcf_file.cpp:25:13: **error: cannot convert ‘bool’** to ‘gzFile {aka gzFile_s*}’ in assignment**
  gzvcf_in = false;
             ^~~~~
Makefile:53: recipe for target 'vcf_file.o' failed
make[1]: *** [vcf_file.o] Error 1
make[1]: Leaving directory '/home/wde/selt/selectionTools/vcftools_0.1.11/cpp'
/bin/sh: 2: cd: can't cd to perl
Makefile:24: recipe for target 'install' failed
make: *** [install] Error 2
error with make

1 个答案:

答案 0 :(得分:1)

makefile基本上做的是自动调用编译器。 因此,makefile的输出类似于您获得的常见编译错误,从命令行编译源文件。 上面错误日志中的重要一行是:

  

vcf_file.cpp:在构造函数'vcf_file :: vcf_file()'中:
  ** vcf_file.cpp:25:13: **错误:无法在作业中将'bool'**转换为'gzFile {aka gzFile_s *}'     gzvcf_in = false;

gzvcf_in的类型为pointer to gzFile_s。将bool变量分配给指针类型不会编译。 因此,错误消息。使用指针文字vcf_file.cpp或宏false替换std::nullptrNULL内部并重新运行makefile。

顺便说一下。我从vcf检查了github repo中的vcf_file.cpp file。它们不包含导致上述错误的行。可能你有一个过时/修改版本,引入编译器错误。