main.cpp ファイルのフォルダーにダウンロードしたsamtools C API ( https://github.com/samtools/samtools ) を使用して、単純な main.cpp プログラムを (Linux で G++ を使用して) コンパイルしようとしています。main.cpp をコンパイルする (そして最終的には samtools コードをコンパイルする) 非常に単純な makefile が必要です。ただし、メイクファイルに関する知識がほとんどないため、おそらく何か間違ったことをしている可能性があります。
これが私のメイクファイルです:
SAMTOOLS=./samtools/
HTSLIB=${SAMTOOLS}htslib-1.9/
all: samtools htslib BAMCoverage
samtools:
${MAKE} -C ${SAMTOOLS}
htslib:
${MAKE} -C ${HTSLIB}
BAMCoverage: main.cpp
g++ -I./ -I${SAMTOOLS} -I${HTSLIB} -g -O2 -Wall ./main.cpp -o ./BAMCoverage -lz -L${SAMTOOLS} -L${HTSLIB} -lbam -lhts
そして、ここに私のcppメインがあります:
#include "samtools/sam.h"
#include <string>
#include <iostream>
using namespace std;
int main (int argc, char *argv[]) {
string bam_file_path ("myfile.bam");
bamFile bam_file = bam_open (bam_file_path.c_str (), "rb");
if (bam_file == 0) {
cerr << "Failed to open BAM file " << bam_file_path << endl;
return 1;
}
bam_close (bam_file);
return 0;
}
「make」を実行すると警告なしでコンパイルされますが、実行時に「共有ライブラリのロード中にエラーが発生しました: libhts.so.2 は共有オブジェクト ファイルを開けません」と表示されます。
どんな助けでも大歓迎です!前もって感謝します。