10 月 25日 安装samtools 缺少 lzma.h 源码编译

起因

对于自学生物信息学的我真是作死的一天,还好我是打不死的小郑,反正服务器主机不能联网,做RNA-seq 要用到samtools,我灵机一动,把sam 文件传到mac电脑,然后在mac上安装samtools,处理文件为bam,再传回主机进行下一步,真是perfect哈,然后事实并不是你想的那样的。。。

步骤及问题

1.首先下载samtools 的源码文件http://www.htslib.org/download/
2.解压
3.cd 进入解压的文件夹
4.make

以上是标准步骤,然而

fatal error: zlib.h & lzma.h : No such file or directory

10 月 25日 安装samtools 缺少 lzma.h 源码编译_第1张图片
fatal error.png

图片不是第一次遇到的问题时的,因为我已经找不到第一次的图片了

然后就是各种百度 谷歌

http://blog.csdn.net/xubo245/article/details/50835347
http://blog.csdn.net/digent1/article/details/9467739
http://seqanswers.com/forums/showthread.php?t=9708
https://stackoverflow.com/questions/22738077/backports-lzma-lzmamodule-c11518-fatal-error-lzma-h-no-such-file-or-direct

其实远远不止这些,但是说道底,就是缺啥补啥

我自然是安装了这些包,但是有一点,mac和linux下不一样,mac 下 用brew install xz

有一篇文章里面说的 lzma.h 转到xz里面

OK,顺便普及一下什么是头文件,也就是.h

在C语言家族程序中,头文件被大量使用。一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明(declaration),而定义文件用于保存程序的实现 (implementation)。 .c就是你写的程序文件。

其实我C++一点也不懂。。。

然而我安装完成之后,还是说缺少,没找到

我仔细想了一下,应该是已经装好了,刚好也看到一篇文章里面说 用一下这个命令:

sudo find /usr -name lzma.h

确实已经安装在我的目录里面了:

然后我想了2个思路去解决

第一个坑死我的思路:

去修改makefile 这个文件


10 月 25日 安装samtools 缺少 lzma.h 源码编译_第2张图片
makefile

然后我根本不懂C语言,百度了半天,说是在CFLAGS
后面加上include 路径就可以了

-I/usr/local/Cellar/xz/5.2.3/include/

10 月 25日 安装samtools 缺少 lzma.h 源码编译_第3张图片
open makefile

好吧,不知道有没有哪位大神教我一下,为啥我加了这个,而且也试了在命令行加了路径,就是说不行。。

第二个思路:我直接把那个文件考到需要的目录就可以了

这个方法是可行的,但是mac电脑有robotless机制,根目录下的那个文件夹不能考,用root 也不行,只有在物理开机的时候取消这个机制,但是我胆子小,没有去尝试。

然后我就不详细说啦,反正我又找了2个小时,期间还去构建了一个虚拟机,尝试各种方法,最后我找到了还有一个路径

cp -r lzma /usr/local/include

把之前的 lzma 和lzma.h 都复制到 /usr/local/include 下,就可以make 了

好不容易啊。。。。

最后总结一下在一点不知道C语言的情况下如何搜索:

1.编译的头文件如何增加路径
2下载安装好的 lzma.h 怎么放到程序可读的文件路径中
3.make 缺少包 lib .h 如何安装
4.源码编译中如何修改makefile 增加路径
5.mac 如何安装 lzma.h

你可能感兴趣的:(10 月 25日 安装samtools 缺少 lzma.h 源码编译)