«внутренняя ошибка компилятора» из сборки yajl-ruby на OpenSUSE 12.1 - PullRequest
1 голос
/ 15 января 2012

В качестве требования для chef-клиента я пытаюсь установить yajl-ruby на OpenSUSE 12.1. Пока что возвращается следующее сообщение:

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. Пока я не уверен, какой путь выбрать.

1 Ответ

1 голос
/ 19 января 2012

gcc явно рекомендует отправлять отчет об ошибках в OpenSuse с полностью предварительно обработанным источником (опция -E вместо «-c» и добавление перенаправления в файл). Это может быть из-за того, что opensuse gcc может иметь некоторые модификации. Вы должны проверить инструкции на bugs.opensuse.org и отправить отчет об ошибке в OpenSuse. Если ошибка присутствует и в базовом gcc, Bugzilla OpenSuseus отправит ее в апстрим или попросит вас сделать это

Чтобы избежать «внутренней ошибки компилятора» без отправки ошибок, вы можете попытаться изменить параметры сборки. Обычно «внутренняя ошибка компилятора» означает, что что-то идет не так в сложном процессе оптимизации, поэтому вы можете просто изменить этот процесс (порядок этапов оптимизации и какие из них включены). Проще всего изменить уровень оптимизации (например, заменить -O2 на -O1 или -O0) или добавить что-то вроде -Osize.

...