【问题标题】:"internal compiler error" from yajl-ruby build on OpenSUSE 12.1OpenSUSE 12.1 上 yajl-ruby 构建的“内部编译器错误”
【发布时间】:2012-01-14 20:21:25
【问题描述】:

作为 chef-client 的要求,我正在尝试在 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 的问题。到目前为止,我不确定要走哪条路。

【问题讨论】:

  • gcc 明确建议您使用完整的预处理源(-E 选项而不是“-c”并添加重定向到文件)向 OpenSuse 发送错误报告。这可能是因为 opensuse gcc 可能有一些修改。您可以在下一个非 SOPA 日查看bugs.opensuse.org 的说明。如果 bug 也存在于基本 gcc 中,opensuse bugzilla 人员会将其转发到上游或要求您这样做。
  • 所以我认为 Chef 还不能使用 OpenSUSE? :)
  • 不,对于一些罕见的配置,这看起来像“内部编译器错误”,可以通过使用其他编译器甚至将-O2 更改为-O0 来修复
  • 就是这样。您可以将其发布为答案以便我接受吗?

标签: gcc opensuse chef-infra yajl


【解决方案1】:

gcc 明确建议您使用完整的预处理源(-E 选项而不是“-c”并添加重定向到文件)向 OpenSuse 发送错误报告。这可能是因为 opensuse gcc 可能有一些修改。您应该查看 bugs.opensuse.org 上的说明并向 OpenSuse 发送错误报告。如果 bug 也存在于基本 gcc 中,opensuse bugzilla 会向上游转发或要求您这样做

为了避免“内部编译器错误”而不发送错误,您可以尝试更改构建选项。通常“内部编译器错误”意味着在复杂的优化过程中出现问题,因此您可以更改此过程(优化阶段的顺序和启用的顺序)。最简单的方法是更改​​优化级别(例如,将 -O2 替换为 -O1-O0)或添加类似 -Osize 的内容。

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 2020-11-14
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    相关资源
    最近更新 更多