在CentOS 5.4 x86_64上面 安装simspark出现了一些以前没有遇到的小状况,记录下来,也许对自己和其他人有用。
这里的simspark使用的是SVN repo上面下的最新源码。
在编译SPADES的时候出现ld也就是链接错误(ld: could not read symbol: file in wrong format),经过上网查找知道这是因为链接的.o文件在不同的平台下编译的问题。而错误出在expat有两个版本,分别是i386和x86_64版本,应该只要使SPADES能找到x86_64的版本就可以。我用的是一种比较土鳖的方法,就是把32位的动态链接库放在一个spades找不到的地方,然后spades就可以找到64位的版本了。其实实质应该是去了解autoconfig的用法的,不过时间有点紧。所以………… 在编译spark的时候出现RSTRING_PTR,RSTRING_LEN,RARRAY_PTR,RARRAY_LEN没有定义的问题。原因是CentOS的ruby里面的头文件ruby.h里面没有定义这几个变量。查看最新版本的ruby.h在相应的位置补上就可以。 在配置spark的时候提示boost的regex和thread头文件找不到,原因是CentOS自带的boost库貌似是没有这一个库的。解决的方法是自己下一个boost的库的源代码,然后编译(在simspark的wiki说不用编译,其实是需要的,不然没有相关的链接库)。编译完之后把文件夹,这里假设boost解压后的文件夹为boost_1_33_1,这样把这个文件夹放到喜欢的地方,假设放在/usr/local/里面,然后在cmake spark的时候,用以下的语句配置:cmake -D BOOST_ROOT=/usr/local/boost_1_33_1/ . 。这样就可以让cmake找到boost所在的地方。配置rcssserver3d的时候也是同样的。 在编译spark的时候出现ode.a: could not read symbol: bad value。错误提示用-fPIC标志重新编译库。上网找了找,原来是需要-fPIC的标志重新编译ode,具体的解释貌似是和体系结构的代码重定位有关,可以看这里 的-fPIC的解释。在重新编译之后,我还把ode的库的位置更改在/usr/lib64里面,不知道这个和后面的成功编译有没有关系。在重新编译了ODE之后,spark终于成功编译。 在安装了spark和rcssserver3d之后,启动rcssserver3d的时候出现(InputServer) ERROR: no InputSystem installed的错误信息,这是由于rcssserver3d在0.6.3之后在initscrpt里面去掉了internal monitor的启动,而这个信息就是由于这个monitor没有启动引起的。其实这并不是一个错误,实际上server已经正常的启动了,如果这个时候另外再连接rcssmonitor3d的话,就可以看见和之前版本一样的画面。这个误导性的错误输出不知道在最新的0.6.4里面有没有修正。安装总结:
这次安装里由于是在64位系统上安装,出现了一些之前没有出现的情况,例如在编译的时候出现了ld的bad value错误。 在./configure的时候,可以设定一些参数值,具体用法可以看./configure --help。例如./configure CXXFLAGS=/usr/local 64位系统里面用的库有/lib64和/usr/lib64等等。