From: ngotogenome@... Date: 2014-04-04T14:44:37+00:00 Subject: [ruby-dev:48091] [ruby-trunk - Bug #9702] r45488以降、SolarisStudioで ext/readline がコンパイルエラー(readline 6.2使用) Issue #9702 has been updated by Naohisa Goto. have_type() 内ではsizeof を使って型のサイズをとれるかを元に型の有無を判定しているようですが、 調べたところ、sizeof を関数(関数ポインタではなく)に使うのは未定義動作のようです。 http://stackoverflow.com/questions/12259101/why-is-the-size-of-a-function-in-c-always-1-byte ---------------------------------------- Bug #9702: r45488以降、SolarisStudioで ext/readline がコンパイルエラー(readline 6.2使用) https://bugs.ruby-lang.org/issues/9702#change-46075 * Author: Naohisa Goto * Status: Open * Priority: Normal * Assignee: * Category: ext * Target version: * ruby -v: ruby 2.2.0dev (2014-04-04) [sparc64-solaris2.10] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- r45488以降、Solarisにて、ext/readline が下記のようにコンパイルエラーになります。コンパイラは SolarisStudio 12.3 です。 readline 6.2 との組み合わせになります。 (前略) cd ext/readline && exec make -w V=1 all make[2]: Entering directory `/XXXXXXXXXX/ext/readline' cc -I. -I../../.ext/include/sparc64-solaris2.10 -I../.././include -I../.././ext/readline -DRUBY_EXTCONF_H=\"extconf.h\" -I/usr/local/64/lib/libffi-3.0.10/include -I/usr/local/64/include -KPIC -xO1 -xtarget=sparc64viiplus -m64 -o readline.o -c readline.c "/usr/local/64/include/readline/rltypedefs.h", line 61: identifier redeclared: Function current : function(void) returning int previous: function() returning int : "/usr/local/64/include/readline/rltypedefs.h", line 34 cc: acomp failed for readline.c make[2]: *** [readline.o] Error 2 make[2]: Leaving directory `/XXXXXXXXXX/ext/readline' make[1]: *** [ext/readline/all] Error 2 make[1]: Leaving directory `/XXXXXXXXXX' make: *** [build-ext] Error 2 ext/readline/extconf.rb の readline.have_type("rl_hook_func_t") に、 rl_hook_func_t は存在するはずにもかかわらず、失敗しているのが原因のようです。 extconf.h と mkmf.log を添付します。 ---Files-------------------------------- extconf.h (1.39 KB) mkmf.log (73.8 KB) -- https://bugs.ruby-lang.org/