首先从github上下载源码:github:https://github.com/lingochamp/kaldi-ctc
解压后根据文件夹中的readme的步骤一步一步执行:
1.进入tools路径:
cd tools
编译:
make
再执行:
make openblas
make openblas这一步可能会报错提示要安装gfortran,直接apt-get install就行。
安装完成后,可能还要报错:“/usr/bin/ld: 找不到 -lgfortran”,这里说是没有gfortran的库函数,所以执行
sudo apt-get install libgfortran-4.8-dev
下载好库函数后,将该函数放入local/lib下:
sudo cp libgfortran.so /usr/local/lib/
一切顺利后再执行一遍make openblas就行,实在不行就从make开始,一般出现done就说明编译好了,否则就再找找有什么报错,一般都是没安装什么东西。
2.按照readme里的步骤接下是:
bash extras/install_cudnn.sh
可以尝试用这个脚本进行下载cudnn,但一般也会报错:”your cuda is too new or too old“,但我之间跑kaldi的chain时就已经安装好了cuda8.0,不知道咋解决就自己去官网下载cudnn了:
https://developer.nvidia.com/rdp/cudnn-archive
我下的是 cuDNN v5.1 (Jan 20, 2017), for CUDA 8.0,好像只能下载install_cudnn.sh里提供的两个版本。然后就解压下载好的cudnn-8.0-linux-x64-v5.1.tgz,解压出来就一个叫CUDA的文件夹。此时按照readme里的要求要“copy include/lib[64] dirs to system’s CUDA path yourself.”,就是把下载好的cudnn里的include的路径和lib64路径覆盖你之前安装好的cuda路径里面的同名目录,怕出问题的同学可以给以前的文件备个份。首先执行:(注意:yourcuda_same_dir就是你安装的cuda的同名路径)
Sudo cp -r CUDA/include/cudnn.h yourcuda_same_dir
Sudo cp * -r CUDA/lib64 yourcuda_same_dir
再给覆盖后的路径读写权限:
Sudo chmod a+r the_copy_file
3.编译源代码
进入src目录:
cd src
配置cuda路径:(注意:YOUR_CUDNN_ROOT就是你的cuda路径,应该就是那个叫CUDA的文件夹的路径,有点忘了)
./configure --cudnn-root=YOUR_CUDNN_ROOT --openblas-root=../tools/OpenBLAS/install
配置没有问题后,就执行:
make depend -j8
j后面的数字根据自己电脑的配置自行取就行了,然后执行最后一步:
make -j8
这一步会编译很久,可能要个接近10分钟,那种很快就编译完了的一般都报错了,好好找找吧。如果出现done就证明编译成功啦。