Мне удалось скомпилировать ruby 2.0.0 в режиме aix в 64-битном режиме, и теперь я пытаюсь заставить свою оболочку swig работать над классом c++.
После компиляции ruby, make test
будет возвращена чистой, и действительно рубин, кажется, работает нормально. Следующим шагом было скомпилировать расширение.
указав на мою новую рубиновую установку, я создал 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)
BTW, я, когда я использовал тот же самый сгенерированный cxx файл, и выполнил ту же процедуру в Linux, все работает отлично.
Любая идея была начать выяснять, что сломалось?
Когда требуется отказ по какой-либо причине, отличной от "нет такого файла", вам нужно копать глубже. В моем случае проблема не была связана с пространством вообще. В моем случае проблема была не в пространстве, а в том, что, хотя файл общих объектов мог быть расположен, он не загружался должным образом. Расширение попыталось связать с несовместимой библиотекой. Расширение было скомпилировано с использованием g++, а библиотека была скомпилирована с использованием xlC. Ошибочные имена двух библиотек были несовместимы. перекомпиляция библиотеки с использованием g++ решена проблема