我一直在尝试在OS X 10.7下构建ECL,我一直在遇到麻烦了。当我尝试构建它时,我最终得到一个在ecl_min阶段出现段故障。
我配置如下行:
./configure --build=x86_64 --target=x86_64 --prefix=`pwd`/install_ecl
CC=/Developer/usr/bin/gcc-4.2
和编译失败:
if [ -f CROSS-COMPILER ]; then
./CROSS-COMPILER compile;
else
ECLDIR=`pwd`/ ./ecl_min compile;
fi
/bin/sh: line 1: 17433 Segmentation fault: 11 ECLDIR=`pwd`/ ./ecl_min compile
我已经尝试在外部构建gmp和boehm-gc,而不是使用包括一些,但不幸的是,结果是一样的。我我也试过默认的llvm-gcc,但也没有多少运气。
是否有人能够在Lion下编译ECL,如果是,你需要应用哪些配置选项/补丁。
更新:多亏了下面这个公认的答案,我才得以编写这篇文章。以下是我使用的脚本(注意:这是从ECL的新git克隆):
#!/bin/sh
ECL_INSTALLDIR="`pwd`/install_ecl"
mkdir -p $ECL_INSTALLDIR
./configure
--prefix=$ECL_INSTALLDIR
--enable-boehm
--enable-unicode=no
CC=/Developer/usr/bin/gcc
CXX=/Developer/usr/bin/g++
CFLAGS="$CFLAGS"
LDFLAGS="$LDFLAGS"
make && make install
此问题已在git/CVS中修复。如上所述,错误编译的原因是我们的垃圾收集器的版本:我们发布了最后一个可用的版本:7.1,但它不能在OS X Lion上工作。ECL现在有两个版本(7.1和7.2-cvs),使用的是OS X Lion中的最新版本。换句话说,来自git/CVS (http://ecls.sourceforge.net/download.html)的ECL应该可以编译并开箱即用。
本页描述了问题的两个原因(一个是编译器的问题,另一个是垃圾收集器兼容性的问题),并提供了一个临时解决方案,直到问题本身得到修复。这些指令可以归结为:
- 下载Boehm-Weiser垃圾收集器库的新版本,应用补丁(您可以从该页面获得下载库和补丁的链接),并将其安装在某处
- 用这些额外的选项配置ECL:
其中/location/for/library
是用来安装垃圾收集器的前缀。
然后它应该正确构建。
我还发现了这个MacPorts票,它似乎在跟踪这个问题;查看未来的更新,看看它是否会被修复。