Помогите установить 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, которого я избегаю по причинам лицензирования.)



person Vultaire    schedule 03.10.2010    source источник
comment
Совет: прочитайте сообщения об ошибках, которые вы опубликовали. Если вы это сделали, объясните, как вы пытались с ними справиться (самое простое: добавьте --enable-threads для настройки и/или установки библиотеки GMP), и если это не сработало, почему это не удалось.   -  person Ramarren    schedule 03.10.2010
comment
Я читал сообщения. 1-й: я пробовал две разные установки MinGW32. Одной из них была классическая пошаговая установка ядра MinGW, Msys, GCC, заголовков поддержки w32 и т. д. Вторая — автоматическая установка, которую я позже заметил на их странице SF. В обоих случаях ошибка была одна и та же. Я не знал о --enable-threads; Я попробую это. (Второй, очевидно, не так близок; поскольку я на 64-разрядной версии, мне просто было любопытно, знал ли кто-нибудь об отсутствующем пакете или что-то в этом роде, или мне пришлось вручную скомпилировать/установить эту библиотеку (и любую другие, которые появятся после установки GMP).)   -  person Vultaire    schedule 06.10.2010
comment
--enable-threads, кажется, помог мне на 99%. Возможно, я смогу как-то решить проблемы отсюда. Я хотел бы отдать вам должное за ответ, но у меня нет возможности сделать это для комментария...   -  person Vultaire    schedule 06.10.2010
comment
Вы также можете получить официальную сборку Windows отсюда: sourceforge.net/projects/ecls/files У меня работало из коробки в Win7   -  person Antonio Bonifati 'Farmboy'    schedule 24.05.2012


Ответы (1)


Во-первых, 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 занимает гораздо больше времени.

person Marko    schedule 03.02.2011
comment
Этот вопрос был от 4 месяцев назад; Насколько я знаю, 10.4.1 была последней версией на тот момент ;) При этом я попробую то, что вы здесь сказали. Было бы отлично, чтобы это заработало. - person Vultaire; 04.02.2011
comment
@Voltaire: эти шаги не включают установку libffi. Вам понадобится libffi, так как это единственный способ заставить CFFI работать в новых версиях. - person Marko; 07.02.2011
comment
Я не собирался волноваться о FFI, но ты подтолкнул меня. В конце концов я написал полностью автоматическую процедуру установки и отправил ее на github. Возможно, это поможет другим в будущем. (Требуется wget (из gnuwin32) в PATH для загрузки tar-архивов.) - person Vultaire; 08.02.2011
comment
Здорово. Было бы хорошо, если бы вы разместили этот скрипт на более видном месте. Вы можете опубликовать его в списке рассылки ecl, и на него может быть даже ссылка из документации ECL. Этот вопрос (проблемы сборки mingw32) возникает очень часто. - person Marko; 08.02.2011
comment
Мой случай был похож на то, что проверка юзабилити на gmp не удалась. Я работал с Ubuntu 14.04 и libgmp10 2:5.1.3 и пытался установить новую версию библиотеки isl. Проблема решена установкой libgmp-dev - person XavierStuvw; 09.02.2017