帮助在 Win7-64 上通过 mingw32 或 mingw-64 安装 ECL (Embeddable Common Lisp)

Posted

技术标签:

【中文标题】帮助在 Win7-64 上通过 mingw32 或 mingw-64 安装 ECL (Embeddable Common Lisp)【英文标题】:Help with installing ECL (Embeddable Common Lisp) via mingw32 or mingw-64 on Win7-64 【发布时间】:2010-10-03 05:37:22 【问题描述】:

我正在尝试在我的 Win7 64 位机器上编译 ECL 10.4.1,但遇到了问题。

我已经尝试使用mingw32/MSYS 和mingw-w64/MSYS 进行构建,使用链接到此处的确切包。两者都失败了。

使用mingw32:./configure通过,make失败如下:

gcc -DECLDIR="\"/usr/local/lib/ecl-10.4.1\"" -I. -Ic:/my_home/ecl-10.4.1/build -I/c/my_home/ecl-10.4.1/src/c -I../ecl/gc -DECL_API -DECL_NO_LEGACY   -g -O2   -Dmingw32 -c -o main.o tmp.c

In file included from c:/my_home/ecl-10.4.1/src/c/main.d:20:0:
c:/my_home/ecl-10.4.1/build/ecl/ecl.h:71:4: error: #error "The Windows ports cannot be built without threads."
make[2]: *** [main.o] Error 1
make[2]: Leaving directory `/c/my_home/ecl-10.4.1/build/c'
make[1]: *** [libeclmin.a] Error 2
make[1]: Leaving directory `/c/my_home/ecl-10.4.1/build'
make: *** [all] Error 2

使用 mingw-w64: ./configure 失败如下:

[...]
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking gmp.h usability... no
checking gmp.h presence... no
checking for gmp.h... no
checking gmp/gmp.h usability... no
checking gmp/gmp.h presence... no
checking for gmp/gmp.h... no
configure: error: Can not find GMP header.

有人对这两种方法有什么建议吗?或者我可以尝试另一个构建系统吗? (除了 Cygwin,我出于许可原因避免使用。)


【问题讨论】:

建议:阅读您发布的错误消息。如果你这样做了,请解释你是如何尝试处理它们的(最基本的:添加 --enable-threads 来配置和/或安装 GMP 库),如果没有工作,它是如何失败的。 我确实阅读了这些消息。第一个:我尝试了两种不同的 MinGW32 安装。一个是经典的 MinGW 核心、Msys、GCC、w32 支持头文件等的一对一安装。两个是我后来在他们的 SF 页面上注意到的自动安装。在这两种情况下,错误都是相同的。我不知道 --enable-threads;我会试试的。 (第二个显然没有那么接近;因为我是 64 位的,所以我只是好奇是否有人知道丢失的包或类似的东西,或者我是否必须手动编译/安装该库(以及任何其他会在安装 GMP 后出现)。) --enable-threads 似乎让我完成了 99% 的工作。也许我可以以某种方式从这里解决问题。我很乐意为您提供答案,但我无法发表评论... 你也可以从这里获得官方的 Windows 版本:sourceforge.net/projects/ecls/files 它在 Win7 中对我来说是开箱即用的 【参考方案1】:

首先,10.4.1 确实是旧版本。至少更新到 11.1.1,或者,最好是 git 版本。 然后,你需要安装mingw32(最好使用mingw-get)和msys。

之后,需要安装mingw32-gmp-dev包(或手动编译)、boehm-gc-7.2alpha2和libffi。

鉴于您应该启动您的 msys shell 并键入以下命令:

./configure CFLAGS="-Ic:/msysdir/local/include -Ic:/msysdir/local/lib/libffi-3.0.9/include" LDFLAGS="-Lc:/msysdir/local/lib" --prefix=c:/opt/ecl --enable-threads --with-system-gmp -enable-boehm=system && make 2>&1 | tee -a build.log

这将构建 32 位版本。对于 m64 版本,您首先需要将所有 ECL 依赖项构建为 64 位。我没试过。

此外,您也许可以使用 ECL 中包含的 gmp 和 gc 来代替系统中的 gmp 和 gc。我不这样做,因为 ECL 构建需要更多时间。

【讨论】:

这个问题是4个月前的;据我所知,10.4.1 是当时的最新版本;)话虽如此,我会试试你在这里所说的。让它工作起来会很棒。 老实说,我通过参考this link 解决了这个问题。我稍微调整了程序,但我能够安装它。 (32 位版本)我认为由于使用 7.0 gc 而不是 7.2 alphas 之一,我被阻止了。我想如果我能按照你的程序写信,它也会让我到达那里。感谢您的帮助和推动完成这项工作 =) @Voltaire:这些步骤不包括 libffi 安装。你需要 libffi,因为它是让 CFFI 在新版本中工作的唯一方法。 本不想担心 FFI,但你逼我。最后写了个全自动安装程序,推送到github。也许它会在未来帮助其他人。 (需要 PATH 中的 wget(来自 gnuwin32)来下载 tarball。) 太棒了。如果您可以将此脚本发布到更明显的空间,那就太好了。您可以将其发布到 ecl 邮件列表,甚至可以从 ECL 文档链接。这(mingw32 构建问题)是经常出现的问题。

以上是关于帮助在 Win7-64 上通过 mingw32 或 mingw-64 安装 ECL (Embeddable Common Lisp)的主要内容,如果未能解决你的问题,请参考以下文章

我是win7 64位的系统,下载了Qt 5.2.1 for Windows 32-bit (MinGW 4.8, OpenGL, 634 MB)请安装过的大神

求解win7 64位上安装Qt4.8.6 + Qt Creator3.1.0 + mingw ??

win7(64bit)使用mingw64配置gtkmm

Loadrunner11无法在win7 64位上启用ie解决办法

win7 64位下基于python2.7安装xgboost

在 windows7 上使用 mingw32 编译 Qt 4.8.5:“没有这样的文件或目录”