从Solaris 11 Express升级到Solaris 11 ( 11 /11)后,我不再能够编译Erlang/OTP (为了构建couchdb),与在VirtualBox中重新安装Solaris 11 64位相同。
在./configure之后,gmake由于某些汇编程序问题而失败。我尝试了Erlang R14B03、R14B04和R15B,但没有成功。
-I/home/admin/Workarea/otp_src_R14B03/erts/i386-pc-solaris2.11
gcc -g -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-tree-copyrename -DERTS_SMP -DHAVE_CONFIG_H -Wall -Wstrict原型-Wmissing声明后的-DUSE_THREADS -D_THREAD_SAFE -D_REENTRANT -DPOSIX_THREADS -D_POSIX_PTHREAD_SEMANTICS -i386-pc-solaris2.11/opt/smp-obj/i386-pc-solaris2.11/opt/smp/hipe_x86_glue.o汇编器:"/var/tmp//ccH5a4cn.s",第1行:行附近的语法错误:“.section”.text“gmake3:*.section错误1 gmake3:离开目录`/home/admin/Workarea/otp/erts/仿真器‘
有什么想法吗?也许我需要禁用./configure中的某些功能,还是缺少了所需的包?我试着用gcc-45编译,这是由甲骨文提供的,gcc是4.6.2来自OpenCSW.
发布于 2012-02-22 17:19:39
完成了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)运行的测试时,couchdb崩溃了。不知道到底是什么原因,可能是二郎?会调查..。
https://stackoverflow.com/questions/9292967
复制相似问题