我设法在64位模式下在aix上编译ruby 2.0.0,现在我试图让我的swig包装器绕c ++类工作。
编译ruby后,make test
恢复干净,确实红宝石似乎运行正常。
下一步是编译扩展名。
指向我的新ruby安装我创建了一个extconf.rb,其中包含以下内容:
require 'mkmf'
create_makefile('wv')
wv是模块的名称。 然后我跑了
make
make install
运行干净的但是当我跑步时
ruby -e "require 'wv'"
我得到以下追溯。
/blah/blah/ruby/aix/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require': load failed - /blah/blah/ruby/aix/lib/ruby/site_ruby/2.0.0/powerpc-aix6.1.0.0/wv.so. Not enough space[loadquery failed] (LoadError)
顺便说一下,当我使用相同的swig生成的cxx文件并在linux上执行相同的程序时,一切正常。
任何想法是要开始弄清楚什么是坏的?
答案 0 :(得分:0)
如果由于“没有这样的文件”以外的任何原因而要求失败,则需要深入挖掘。 就我而言,问题根本与空间无关。在我的情况下,问题不是空间,而是事实,虽然可以找到共享对象文件,但它没有正确加载。 扩展程序试图链接到不兼容的库。 扩展是使用g ++编译的,而库是使用xlC编译的。两个库的错位名称不兼容。使用g ++重新编译库解决了问题