最近在学习kaldi,在测试服务器上进行练习,发现测试服务器的Linux是centos系统,目前的gcc版本是4.4,但是kaldi需要至少为4.7版本的,进行了一次升级,到4.7,make了一下kaldi,仍然报错如下:
./../include/fst/shortest-distance.h:283:54: error: no type named ‘Weight’ in ‘using ReverseArc = struct fst::ReverseArc<Arc>’
make[3]: *** [determinize.lo] Error 1
make[3]: Leaving directory `/home/XXXX/kaldi-master/tools/openfst-1.6.2/src/script'
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory `/home/XXXX/kaldi-master/tools/openfst-1.6.2/src'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/home/XXXX/kaldi-master/tools/openfst-1.6.2'
make: *** [openfst_compiled] Error 2
[root@beta1 tools]# ./extras/check_dependencies.sh
./extras/check_dependencies.sh: all OK.
本人C++新手,java一枚,凭感觉是代码问题。可是,不可能啊,源码怎么能错,请教了其他人是gcc版本问题,我感觉就像是java6和java9的api调用那样的问题,于是,果断升级gcc。
gcc升级到4.7步骤:
1、进入/etc/yum.repos.d 下载相关的仓库,安装devtoolset-1.0(这个是版本)
cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools/devtools.repo
yum --enablerepo=testing-devtools-6 install devtoolset-1.0
2、安装好devtoolset-1.0后会出现 gcc、gdb、binutils、elfutils、SystemTap、Valgrind、OProfile和dwz,说明devtoolset-1.0是一个软件包,你仍然需要安装自己需要的gcc
yum -y --enablerepo=testing-devtools-6 install devtoolset-1.0-gcc devtoolset-1.0-gcc-c++
3、安装好后,直接新型gcc --version会发现我们gcc并没有到4.7版本,因为我们需要把它放到环境中,就像java的设置环境变量一样,linux的环境变量有很多,有全局的,有个人的,这个需要根据自己的需要确定,但是建议不要弄成全局的,因为如果多人合作,可能因为你的设置给其他人带来麻烦,做人要厚道啊~
echo 'source /opt/centos/devtoolset-1.0/enable' >> ~/.bash_profile
source /opt/centos/devtoolset-1.0/enable
这是推荐对的方法, 使用gcc默认给出的环境变量设置脚本‘/opt/cent
cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools-2/devtools-2.repo
os/devtoolset-1.0/enable ’,将其加到有需要用户的环境变量中。
4、至此,gcc 4.7升级成功,可以测试一下
gcc --version
升级 gcc 4.8
升级到4.7按理说我已经达到kaldi的最低要求了,应该可以编译了,但是仍然报错,于是还得悲催的升级到4.8
1、还是上面开始的操作,但是需要把版本改成devtools-2
cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools-2/devtools-2.repo
2、安装步骤其实和上面一样,只不过将两句命令合并在一起了
yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++
3、这次的安装位置在
/opt/rh/devtoolset-2
所以我们还是像上次一样的命令添加环境变量,只不过需要把路径改一下
echo 'source /opt/rh/devtoolset-2/enable' >> ~/.bash_profile
source /opt/rh/devtoolset-2/enable
4、现在我们的4.8已经安装成功了
gcc --version