从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进行编译。
答案 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?将调查......