我正在尝试使用已下载到 main.cpp 文件文件夹中的samtools C API ( https://github.com/samtools/samtools ) 编译(在 Linux 上,使用 G++)一个简单的 main.cpp 程序。我想要一个非常简单的makefile来编译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 无法打开共享对象文件”
任何帮助都非常受欢迎!提前致谢。