在AIX 7.1上从源代码编译Ruby

时间:2018-12-11 03:55:40

标签: ruby gcc aix

我正在尝试在AIX 7.1上使用gcc编译器从源代码编译Ruby 2.4.5。配置工作正常,但制造失败并给出错误C,这不是可识别的标志。有人遇到同样的问题并设法在AIX 7.1上编译ruby吗?

http:../BIS/e-system.html

更新:

切换到GNU make会出现以下错误:

Steps followed:

1) ./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=" -- works perfectly fine

2) make - fails with the below error

    make: Not a recognized flag: C
    usage: make [-einqrst] [-k|-S] [-d[A|adg[1|2]mstv]] [-D variable] [-f makefile] [-j [jobs]] [variable=value ...] [target ...]
    make: 1254-004 The error code from the last command is 2.
    Stop.
    make: 1254-004 The error code from the last command is 2.
    Stop.
    make: 1254-004 The error code from the last command is 2.

1 个答案:

答案 0 :(得分:1)

问题是您使用的是AIX的内置副本make,它不支持命令行选项-C。该选项在GNU make中可用。

如果您运行make -v并且没有看到如下所示的输出,则说明您未使用GNU make:

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.

运行命令which make,它将返回/usr/bin/make/opt/freeware/bin/make(或/usr/bin之外的类似路径):

  • 如果它返回/usr/bin/make,则说明您的系统上未安装GNU make,因此需要按照one of several教程进行安装在AIX上。

  • 如果它返回/opt/freeware/bin/make,则说明您确实安装了GNU make,但未反映在$PATH中。您可以在编译Ruby时暂时将其添加到路径中,方法是在运行export PATH=/opt/freeware/bin:$PATH命令之前先运行make

更新

我鼓励您针对当前的构建问题打开一个单独的问题,因为原始问题与-C的{​​{1}}标志在AIX上不起作用有关,现在您还有一个单独的问题运行GNU make会带来完全不同的问题和可能的解决方案。

也就是说,您有可能可以通过重新开始并运行make(或到达./configure LIBTOOL='/usr/bin/libtool --tag=CC'的任何路径)来解决问题。这是基于以下消息:

libtool

如果这不起作用,那么您可能必须编辑libtool: compile: unable to infer tagged configuration libtool: compile: specify a tag with `--tag' ,方法是查找Makefile的特定调用,并将libtool逐一追加到它们中,直到能够克服这些错误。

两个解决方案都假设唯一要编译的代码是C。据我所知,MRI中需要编译的所有内容都用C编写,但是如果用C ++编写,则需要--tag=CC调用libtool。您可以阅读有关标签here的更多信息。