Я новичок в среде Linux и пытаюсь установить пакет биоинформатики (vcftools — https://vcftools.github.io/examples.html). По какой-то причине я могу без проблем скомпилировать в среде Cygwin, другие коллеги установили пакет без сбоев, но я получаю ошибку (см. Ниже), если я пытаюсь скомпилировать в среде Ubuntu в VirtualBox на том же компьютере. Я получаю следующую ошибку. У кого-нибудь есть предложения по устранению этой ошибки?
$ 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
По сути, makefile выполняет автоматизацию вызовов компилятора.
Таким образом, вывод из make-файла аналогичен обычным ошибкам компиляции, которые вы получаете, компилируя исходный файл из командной строки.
Важная строка из журнала ошибок выше:
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
и снова запустите make-файл.
Btw. Я проверил файл vcf_file.cpp в репозитории GitHub от VCF. Они не содержат строки, приводящей к вышеуказанной ошибке. Может быть, у вас есть устаревшая / измененная версия, вводящая ошибку компилятора.
Других решений пока нет …