Помогите с установкой ECL (Embeddable Common Lisp) через mingw32 или mingw-64 на Win7-64
Я пытаюсь скомпилировать ECL 10.4.1 на 64-битном компьютере с Win7, но у меня возникают проблемы.
Я попытался выполнить сборку как с 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, которого я избегаю по причинам лицензирования.)
1 ответ
Firt, 10.4.1 действительно старая версия. Обновить по крайней мере 11.1.1
или, предпочтительно, git-версия. Затем вам нужно установить mingw32 (желательно используя mingw-get) и msys.
После этого вам нужно установить пакет mingw32-gmp-dev (или скомпилировать его вручную), boehm-gc-7.2alpha2 и libffi.
Учитывая все это, вы должны запустить оболочку msys и ввести следующую команду:
./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-битные. Я не пробовал это.
Кроме того, вы можете использовать gmp и gc, включенные в ECL, вместо системных. Я так не делаю, так как сборка ECL занимает намного больше времени.