【问题标题】:How do I configure ruby to compile in 64 bit mode on AIX如何将 ruby​​ 配置为在 AIX 上以 64 位模式编译
【发布时间】:2014-02-23 14:58:17
【问题描述】:

我下载了 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'

也许我会针对这个问题提出一个新问题

【问题讨论】:

    标签: ruby aix


    【解决方案1】:

    这将是一场艰苦的斗争。

    首先,看看你是否可以在 gcc 命令行中添加 -mpowerpc64 -maix64 来构建一个简单的 hello world。例如

    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 和其他文件以添加您需要的标志。我确信有一步解决方案,但这可以避免您每次都重新开始。

    【讨论】:

    • 谢谢佩兹。这是一场艰苦的战斗。
    • 这可能违反了 SO 规则,但我很好奇你必须修改什么。
    • 不确定您所说的修改是什么意思?我所做的只是使用上面包含的选项运行 ./configure 并且我能够干净地编译
    猜你喜欢
    • 2012-12-21
    • 2012-02-14
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 2016-11-15
    相关资源
    最近更新 更多