Erlang / OTP无法在Solaris 11 11/11上编译

时间:2012-02-15 12:00:49

标签: gcc erlang solaris

从Solaris 11 Express升级到Solaris 11(11/11)后,我无法再编译Erlang / OTP(为了构建couchdb),与VirtualBox中全新安装的Solaris 11 64位相同。

./configure之后,gmake因某些汇编程序问题而失败。我试过Erlang OTP R14B03,R14B04和R15B但没有成功。

  

gcc -g -O2 -I / home / admin / Workarea / otp_src_R14B03 / erts / i386-pc-solaris2.11 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS = 64 -fno-tree-copyrename -DERTS_SMP -DHAVE_CONFIG_H -Wall -Wstrict-prototypes -Wmissing-prototypes -Wdeclaration-after-statement -DUSE_THREADS -D_THREAD_SAFE -D_REENTRANT -DPOSIX_THREADS -D_POSIX_PTHREAD_SEMANTICS -Ii386-pc-solaris2.11 / opt / smp -Ibeam -Isys / unix -Isys / common -Ii386-pc-solaris2.11 -Izlib -Ipcre -Ihipe -I ../ include -I ../include / i386-pc-solaris2.11 -I ../include/ internal -I ../include/ internal / i386-pc-solaris2.11 -c hipe / hipe_x86_glue.S -o obj / i386-pc-solaris2.11 / opt / smp / hipe_x86_glue.o   汇编程序:           “/var/tmp//ccH5a4cn.s”,第1行:语法错误           近行:“。section”.text“”   gmake [3]: * [obj / i386-pc-solaris2.11 / opt / smp / hipe_x86_glue.o]错误1   gmake [3]:离开目录`/ home / admin / Workarea / otp / erts / emulator'

有什么想法吗?也许我需要在./configure中禁用某些功能,或者我是否缺少必需的包?我尝试使用Oracle提供的gcc-45和OpenCSW的gcc 4.6.2进行编译。

1 个答案:

答案 0 :(得分:0)

制作OTP R14B04编译。首先,您需要删除导致构建失败的一些内容(另请参阅:http://www.dev-eth0.de/couchdb-on-opensolaris-part-1-erlang/)。

vim erts/emulator/drivers/common/inet_drv.c

搜索SIOCGIFHWADDR并删除#ifdef SIOCGIFHWADDR#elif defined(SIOCGENADDR)之间的所有内容:

之前(erts/emulator/drivers/common/inet_drv.c):

...
#ifdef SIOCGIFHWADDR
    if (ioctl(desc->s, SIOCGIFHWADDR, (char *)&ifreq) < 0)
        break;
    buf_check(sptr, s_end, 1+2+IFHWADDRLEN);
    *sptr++ = INET_IFOPT_HWADDR;
    put_int16(IFHWADDRLEN, sptr); sptr += 2;
    /* raw memcpy (fix include autoconf later) */
    sys_memcpy(sptr, (char*)(&ifreq.ifr_hwaddr.sa_data), IFHWADDRLEN);
    sptr += IFHWADDRLEN;
#elif defined(SIOCGENADDR)
...

之后(erts/emulator/drivers/common/inet_drv.c):

...
#ifdef SIOCGIFHWADDR
#elif defined(SIOCGENADDR)
...

然后运行:

./configure --enable-m32-build --disable-hipe
gmake
sudo gmake install

警告:我正在尝试在Solaris 11上构建couchdb,并且当从浏览器中运行第一个测试套件(basics.js)测试时,它会在浏览器中发生崩溃。不确定究竟是什么原因,可能是erlang?将调查......