如何配置ruby以在AIX上以64位模式进行编译
我下载了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上运行正常)有问题。 它编译和链接干净,但我得到一个错误的要求:
.....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'
也许我会就这个问题开始一个新的问题
这将是一场艰苦的斗争。
首先,看看是否可以在gcc命令行中添加-mpowerpc64 -maix64来构建一个简单的hello世界。 例如
gcc -mpowerpc64 -maix64 -o foo foo.c
我建议的原因是我必须做额外的工作来构建我的gcc以获得它在64位模式下使用的所有库。 即使它确实有效,你仍然可能没有所需的所有库,你需要使用ruby及其所有扩展才能工作。
我通过以下的第一个基地:
CFLAGS='-mpowerpc64 -maix64' configure ...
但它死了,我通过添加-Wl,-bbigtoc过去了。 然后ar失败了,因为没有人通过它-X 64标志。 你可以通过编辑Makefile来改变它,并将AR的设置更改为ar -X64。 等等
这里的要点是使用configure来关闭,然后手动编辑Makefile和其他文件,以添加您需要的标志。 我确信有一步解决方案,但这将使您免于每次重新开始。