我是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
答案 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::nullptr
,NULL
内部并重新运行makefile。
顺便说一下。我从vcf检查了github repo中的vcf_file.cpp file。它们不包含导致上述错误的行。可能你有一个过时/修改版本,引入编译器错误。