首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的erlang构建失败,并在Solaris Sparc上出现核心转储?

为什么我的erlang构建失败,并在Solaris Sparc上出现核心转储?
EN

Stack Overflow用户
提问于 2011-07-03 12:42:56
回答 1查看 681关注 0票数 1

(我已经有了答案;我将回答我自己的问题,这样我就可以分享我所学到的东西,并在将来省去别人的麻烦)

当我尝试在Solaris10 Sparcv9上构建Erlang时,构建中途失败:

代码语言:javascript
复制
cd lib && \
  ERL_TOP=/var/tmp/pkgbuild-0/erlang/sparcv9/erlang-otp-73b4221 PATH=/var/tmp/pkgbuild-0/erlang/sparcv9/erlang-otp-73b4221/bootstrap/bin:${PATH} \
        make opt SECONDARY_BOOTSTRAP=true
make[1]: Entering directory `/var/tmp/pkgbuild-0/erlang/sparcv9/erlang-otp-73b4221/lib'
make[2]: Entering directory `/var/tmp/pkgbuild-0/erlang/sparcv9/erlang-otp-73b4221/lib/hipe'
=== Entering application hipe
make[3]: Entering directory `/var/tmp/pkgbuild-0/erlang/sparcv9/erlang-otp-73b4221/lib/hipe/misc'
erlc -W  +debug_info +warn_exported_vars +warn_missing_spec +warn_untyped_record -o../ebin hipe_consttab.erl
make[3]: *** [../ebin/hipe_consttab.beam] Bus Error (core dumped)
make[3]: Leaving directory `/var/tmp/pkgbuild-0/erlang/sparcv9/erlang-otp-73b4221/lib/hipe/misc'

为什么会这样?我可以做些什么来完成Erlang构建?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-03 12:51:48

构建失败的原因是由于构建环境损坏。

在这种特定的情况下,使用的是Sun GCC构建。这个特定版本的GCC被编译为使用GNU汇编程序和Sun链接器的混合。

Sparc平台对代码对齐非常敏感,如果执行未对齐的代码,它将出错(例如,总线错误)。

在Sparc Solaris10上构建的股票GCC使用的GNU汇编程序不能很好地自动对齐编译器生成的函数,从而导致未对齐的代码。

解决方案是构建您自己的GCC,并确保使用系统汇编器和链接器;您可以通过在GCC的配置脚本中使用以下选项来实现此目的:

代码语言:javascript
复制
  --with-as=/usr/ccs/bin/as \
  --without-gnu-as \
  --without-gnu-ld \
  --with-ld=/usr/ccs/bin/ld \

生成的GCC构建将生成正确对齐的代码,并允许您成功构建Erlang。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6561133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档