Компиляция clisp-2.49 на OSX: LIBFFI не найден

TL;DR :

Даже если libffi кажется установленным, скрипт configure не находит его, даже если я даю ему (правильный?) префикс.

/!\ В последней части (*) этого поста я застрял. /!\

Я помещаю другую информацию только для того, чтобы объяснить, как я туда попал. Я прошу прощения за большой пост, если что-то покажется вам неактуальным, не стесняйтесь сказать мне, я рассмотрю возможность сделать свой пост короче.

Почему я хочу скомпилировать CLISP самостоятельно:

У меня есть программа на lisp, которую я хотел бы запустить, но при ее запуске с CLISP, установленным с brew (у меня нет root-доступа), я получаю следующую ошибку:

*** - CFFI requires CLISP compiled with dynamic FFI support.

Поэтому я хотел бы скомпилировать CLISP самостоятельно.

До сих пор я использовал SBCL, но у меня было проблема и искал другую реализацию.

Проблемы, которые у меня возникают при попытке скомпилировать:

Я скачал исходники, разархивировал их.

Затем я пытаюсь запустить ./configure.

Но я получаю это:

Configure findings:
  FFI:        no (user requested: default)
  readline:   no (user requested: default)
  libsigsegv: no, consider installing GNU libsigsegv
./configure: libsigsegv was not detected, thus some features, such as
  generational garbage collection and
  stack overflow detection in interpreted Lisp code
cannot be provided.
Please install libsigsegv like this:
  mkdir tools; cd tools; prefix=`pwd`/x86_64-apple-darwin15.4.0
  wget http://ftp.gnu.org/pub/gnu/libsigsegv/libsigsegv-2.8.tar.gz
  tar xfz libsigsegv-2.8.tar.gz
  cd libsigsegv-2.8
  ./configure --prefix=${prefix} && make && make check && make install
  cd ../..
  rm -f src/config.cache
  ./configure --with-libsigsegv-prefix=${prefix}
If you insist on building without libsigsegv, please pass
  --ignore-absence-of-libsigsegv
to this script:
  ./configure --ignore-absence-of-libsigsegv
If you have installed libsigsegv, but clisp does not detect it,
you might have installed it incorrectly, see section 2 in in unix/INSTALL.

ВАЖНЫЙ :

libffi и libsigsegv устанавливаются вместе с homebrew. Но не найдены. Я попытался добавить --with-libsigsegv-prefix=<several values amongst ~/.brew/{opt,opt/libsigsegv,lib,Cellar/libsigsegv,...} : все та же проблема.

Это также почти то же самое, что и это сообщение или этот . Но проверенные решения у меня не работают (OSX без root-доступа).

При запуске configure с --with-dynamic-ffi и --ignore-absence-of-libsigsegv :

Я попытался запустить ./configure --ignore-absence-of-libsigsegv и добавил --with-dynamic-ffi, как кто-то предложил мне в комментариях.

Но потом я получил это:

Configure findings:
  FFI:        no (user requested: default)
  readline:   no (user requested: default)
  libsigsegv: no, consider installing GNU libsigsegv
As you requested, we will proceed without libsigsegv...
./makemake  --with-dynamic-ffi    > Makefile
clang: error: unsupported option '-print-multi-os-directory'
clang: error: no input files

при попытке вручную установить libffi и libsigsegv :

Я также попробовал вариант из первого сообщения об ошибке:

При запуске ./configure --with-libsigsegv-prefix=${prefix} я получил:

Configure findings:
  FFI:        no (user requested: default)
  readline:   no (user requested: default)
  libsigsegv: yes
./makemake  --with-libsigsegv-prefix=/nfs/2013/v/vmonteco/Documents/clisp-2.49/tools/x86_64-apple-darwin15.4.0    > Makefile
clang: error: unsupported option '-print-multi-os-directory'
clang: error: no input files
make: `config.lisp' is up to date.

даже если я добавлю --with-dynamic-ffi или попытаюсь установить libffi вручную, как предлагалось в первом сообщении об ошибке (а также добавлю --with-ffi-prefix=${prefix})

Если я попытаюсь вручную собрать и установить libffcall, а также:

я получаю много

avcall-i386.s:7:2: error: instruction requires: Not 64-bit mode

при работе make

(*) Итак, теперь он находит libsigsegv, но не находит libffi.

Тем не менее, дерево в ${prefix} выглядит так:

.
├── include
│   └── sigsegv.h
├── lib
│   ├── libffi-3.2.1
│   │   └── include
│   │       ├── ffi.h
│   │       └── ffitarget.h
│   ├── libffi.6.dylib
│   ├── libffi.a
│   ├── libffi.dylib -> libffi.6.dylib
│   ├── libffi.la
│   ├── libsigsegv.a
│   ├── libsigsegv.la
│   └── pkgconfig
│       └── libffi.pc
└── share
    ├── info
    │   ├── dir
    │   └── libffi.info
    └── man
        └── man3
            ├── ffi.3
            ├── ffi_call.3
            ├── ffi_prep_cif.3
            └── ffi_prep_cif_var.3

У меня нет идей.


person vmonteco    schedule 25.04.2016    source источник


Ответы (1)


В OSX (и при разработке только для OSX) рекомендуется проверить Clozure. http://ccl.clozure.com Он включает IDE и по скорости и общей производительности сравним с SBCL. Вы можете разрабатывать собственные приложения пользовательского интерфейса OSX с помощью Clozure, конечно, они не будут переносимыми. Если вы придерживаетесь стандарта, вы можете даже использовать Clozure в Linux и т. д.

person wlbr    schedule 01.05.2016
comment
Это могло бы быть решением, но эта реализация lisp не заявлена ​​как поддерживающая библиотеку, которую я хочу запустить (lispbuildersdl). :/ Я все равно попробую. Но здесь проблема больше в том, что реализация должна быть построена с поддержкой CFFI. - person vmonteco; 04.05.2016
comment
Годы спустя, извините ;-) В Clozure действительно есть поддержка CFFi. - person wlbr; 03.04.2019