如何配置ruby以在AIX上以64位模式进行编译

时间:2014-01-31 01:57:27

标签: ruby aix

我下载了ruby 2.0.0并运行了

./configure
make
make install

在64位Linux机器上构建一个64位版本。 在AIX上,这构建了一个32位版本。如何配置它以64位模式编译?

我试过

export OBJECT_MODE=64
./configure 

但它失败了 检查gcc ... gcc 检查C编译器是否正常工作......没有

更新 我设法用以下内容编译:

export OBJECT_MODE=64  ## not sure if I needed this or not
./configure --disable-install-doc CC="gcc" CFLAGS="-maix64 -mminimal-toc" CXX="g++" CXXFLAGS="-maix64 -mminimal-toc" NM="nm -X64" AR="ar -X64" LDFLAGS="-maix64" EXTLDFLAGS="-maix64"
make
make test
make install 

测试通过,似乎运行正常 不幸的是我的swig生成的扩展(在linux上运行正常)有问题。它编译和链接干净,但我在require上出错:

.....ruby/aix/lib/ruby/site_ruby/2.0.0/powerpc-aix6.1.0.0/wv.so. Not enough space[loadquery failed]
.....ruby/aix/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'

也许我会就这个问题开始一个新问题

1 个答案:

答案 0 :(得分:2)

这将是一场艰难的斗争。

首先,看看你是否可以在gcc命令行中添加-mpowerpc64 -maix64来构建一个简单的hello世界。 e.g。

gcc -mpowerpc64 -maix64 -o foo foo.c

我建议的原因是我必须做额外的工作来构建我的gcc以获得它在64位模式下使用的所有库。即使这确实有效,你仍然可能没有可用的所有库来获得ruby及其所有扩展工作。

我通过以下方式超越了第一个基地:

CFLAGS='-mpowerpc64 -maix64' configure ...

但它死了,因为toc太大,我通过添加-Wl,-bbigtoc而过去了。然后ar失败了,因为没有人通过它-X 64标志。你可以通过编辑Makefile来改变它,并将AR设置为ar -X64。等

这里的要点是使用configure来关闭然后手动编辑Makefile和其他文件以添加你需要的标志。我确信有一步解决方案,但这样可以避免每次重新开始。