2012-02-15 125 views
0

从Solaris 11 Express升级到Solaris 11(11/11)后,我不再能够编译Erlang/OTP(为了构建couchdb),与在VirtualBox中全新安装Solaris 11 64位。在Solaris 11上编译Erlang/OTP失败11 11/11

./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 Assembler: "/var/tmp//ccH5a4cn.s", line 1 : Syntax error Near line: " .section ".text"" gmake[3]: * [obj/i386-pc-solaris2.11/opt/smp/hipe_x86_glue.o] Error 1 gmake[3]: Leaving directory `/home/admin/Workarea/otp/erts/emulator'

任何想法?也许我需要禁用./configure中的某些功能,或者我是否缺少必需的软件包?我试着用Oracle提供的gcc-45和OpenCSW提供的gcc 4.6.2编译。

+0

我试过'./configure --enable-m32-build'导致不同的错误:'hipe/hipe_process.h:72:12:错误:'ERTS_ALC_T_HIPE'未声明(第一次使用在这个函数中)'。 – 2012-02-15 15:29:52

+0

安装Erlang是所有Solaris版本/平台上的一大难题。我建议,你应该尝试Erlang邮件列表来解决这个问题。 – 2012-02-16 06:33:50

回答

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的,并从浏览器崩溃的CouchDB内的测试套件(basics.js)运行从构建一个第一次测试时,它。不确定究竟是什么原因,可能是erlang?将调查...