2012-02-15 115 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?將調查...