4

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 は共有オブジェクト ファイルを開けません」と表示されます。

どんな助けでも大歓迎です!前もって感謝します。

4

1 に答える 1