1

シェフクライアントの要件として、OpenSUSE 12.1 に yajl-ruby をインストールしようとしています。これまでのところ、次のメッセージが返されています。

linux:~ # gem install yajl-ruby
Building native extensions.  This could take a while...
ERROR:  Error installing yajl-ruby:
    ERROR: Failed to build gem native extension.

        /usr/bin/ruby extconf.rb
creating Makefile

make
gcc -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I/usr/lib64/ruby/1.8/x86_64-linux -I.   -fPIC -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -g -fno-strict-aliasing  -fPIC  -Wall -funroll-loops  -c yajl.c
gcc -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I/usr/lib64/ruby/1.8/x86_64-linux -I.   -fPIC -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -g -fno-strict-aliasing  -fPIC  -Wall -funroll-loops  -c yajl_alloc.c
gcc -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I/usr/lib64/ruby/1.8/x86_64-linux -I.   -fPIC -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -g -fno-strict-aliasing  -fPIC  -Wall -funroll-loops  -c yajl_buf.c
gcc -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I/usr/lib64/ruby/1.8/x86_64-linux -I.   -fPIC -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -g -fno-strict-aliasing  -fPIC  -Wall -funroll-loops  -c yajl_encode.c
yajl_encode.c: In function ‘hexToDigit’:
yajl_encode.c:201:1: internal compiler error: Aborted
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugs.opensuse.org/> for instructions.
make: *** [yajl_encode.o] Error 1


Gem files will remain installed in /usr/lib64/ruby/gems/1.8/gems/yajl-ruby-1.1.0 for inspection.
Results logged to /usr/lib64/ruby/gems/1.8/gems/yajl-ruby-1.1.0/ext/yajl/gem_make.out

適切なパッケージがインストールされます。

zypper install ruby ruby-devel ruby-ri ruby-rdoc ruby-shadow gcc gcc-c++ automake autoconf make curl dmidecode

コンパイラの問題であるか、OpenSUSE 固有の問題である可能性があります。これまでのところ、どちらの道を歩むべきかはわかりません。

4

1 に答える 1

1

gcc は、完全に前処理されたソース ("-c" の代わりに -E オプションを使用し、ファイルへのリダイレクトを追加する) を使用して OpenSuse にバグ レポートを送信することを明確に推奨しています。これは、opensuse gcc に変更が加えられている可能性があるためです。bugs.opensuse.org で手順を確認し、OpenSuse にバグ レポートを送信してください。バグが基本的な gcc にもある場合、opensuse bugzilla の人々はそれをアップストリームに転送するか、あなたにこれを行うように依頼します

バグを送信せずに「内部コンパイラ エラー」を回避するには、ビルド オプションを変更してみてください。通常、「内部コンパイラ エラー」は、最適化の複雑なプロセスで何か問題が発生したことを意味するため、このプロセス (最適化ステージの順序と有効になっているもの) を変更するだけでかまいません。最も簡単なのは、最適化のレベルを変更する (たとえば-O2-O1またはに置き換える-O0) か、 のようなものを追加することです-Osize

于 2012-01-19T10:07:22.430 に答える