注:本文用于记录本人编译ScaCTM过程中,出现的错误及解决方案。本人研一小硕,技术较渣,正在向一名合格程序员做转变,所以技术大牛如果看到这些问题是低级错误的话还望海涵,包容一下小弟学识浅显。
ScaCTM是清华大学朱军老师带领学生所开发的并发topic model系统。
系统code地址:https://github.com/cjf00000/ScaCTM
OS:ubuntu14.04
编译器准备:gcc 4.8,g++4.8,gfortran
1)make third_party过程中出现下图所示错误,经试验求证,最初缺少gfortran编译器,或修改third_party/third_party.mk文件的第304行,将它改为
2)make third_party中还会遇到下图所示错误:
向上查找最终错误来源是:
./boost/atomic/atomic.hpp:202:16: error: ‘uintptr_t’ was not declared in this scope
./boost/atomic/atomic.hpp:202:25: error: template argument 1 is invalid
./boost/atomic/atomic.hpp:202:43: error: invalid type in declaration before ‘;’ token
uintptr_t表示64位整数(在64位机器上),而本机编译器不支持。到http://sourceforge.net/projects/boost/files/boost/1.59.0/下载一个最新的boost并替换boost_1_54_0.tar.bz2,同时修改third_party.make中boost编译版本号就可以了。至此,third_payty make过程基本上通过。
最终结果如下图所示:
至此看到上如所示make结果,third_ party 编译过程应该已经完成了。
3)此时make src主程序。
首先make时会曝出语法错误,如图所示:
解决方案:在Unigram_Train_Data_Formatter.cc及Unigram_Test_Data_formatter.cc中增加include <iostream>此错误可以避免,至此编译可以通过,结果如下图所示:
整个系统编译过程完成,系统使用将在下次博文中进行介绍。
linux小渣,很多低级错误不知道什么原因,非常感谢HZ、BW的帮助。