Project

General

Profile

Actions

Bug #6591

closed

r35101以降、古いfccで拡張ライブラリのコンパイルに失敗

Added by ngoto (Naohisa Goto) almost 12 years ago.

Status:
Third Party's Issue
Assignee:
-
Target version:
-
ruby -v:
2.0.0dev (2012-06-08) [sparc64-solaris2.10]
Backport:
[ruby-dev:45742]

Description

古いバージョンの Fujitsu C Compiler Driver Version 5.6 (Nov 24 2006) では、-E オプションを付けてプリプロセッサ処理のみを行う場合、-o で指定した出力ファイル名は無視して、必ず標準出力に結果を出力します。そして、-o で指定した出力ファイルは作成されません。

% cat > tmp.c
#include <stdio.h>
int main(void) { return 0; }
% fcc -E tmp.c -o tmp.i
(画面出力略)
% ls -la tmp.i
tmp.i: No such file or directory

このため、r35101 で lib/mkmf.rb の try_cpp がターゲットファイルの存在をチェックするようになって以降、古いfccでの拡張ライブラリ作成の際、ヘッダの検索に必ず失敗し、その結果、拡張ライブラリが作成されなかったり、適切なヘッダを#includeせずに型が適切に定義されないままコンパイルされてコンパイルに失敗します。なお、ruby本体は問題なく作成されます。

当該コンパイラのバグか仕様かはわかりませんが、普通に考えると、出力ファイルの存在をチェックするほうが当然好ましいため、Third Party's Issue として現象を記録するに留めます。

コンパイラを最新バージョンにバージョンアップするか、何らかのwrapper scriptを介することで対策可能です。


Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #14447: Solaris 10 上の古いFujitsu C Compiler(fcc)のmjit関係のエラーRejectedActions
Actions

Also available in: Atom PDF

Like0
Like0