我正在尝试在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.
答案 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的更多信息。