2012-02-15 2 views
0

После обновления до Solaris 11 (11/11) от Solaris 11 Express я больше не могу скомпилировать Erlang/OTP (для создания couchdb), то же самое с новая установка 64-разрядной версии Solaris 11 в VirtualBox.Erlang/OTP не удается скомпилировать на Solaris 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 или мне не хватает необходимого пакета? Я попытался скомпилировать с gcc-45, как это предусмотрено Oracle и gcc 4.6.2 от OpenCSW.

+0

Я пробовал './configure --enable-m32-build', что приводит к другой ошибке:' hipe/hipe_process.h: 72: 12: error: 'ERTS_ALC_T_HIPE' uneclared (первое использование в этой функции). –

+0

Установка Erlang - это боль на всех версиях/платформах Solaris. Я предлагаю, вы должны попробовать список рассылки Erlang для этой проблемы. –

ответ

0

Made 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 

Оговорка: Я пытаюсь построить CouchDB на Solaris 11 и при выполнении первого теста из сборки в наборе тестов (basics.js) из браузера CouchDB аварий , Не знаете, в чем именно причина, может быть erlang? Будет исследовать ...

Смежные вопросы