在 OSX 上编译 clisp-2.49:未找到 LIBFFI

2024-03-12

TL;DR :

Even if libffi似乎已安装,configure即使我给它添加(正确的?)前缀,脚本也找不到它。

/!\ 这篇文章的最后一部分(*)是我陷入困境的地方。 /!\

我仅提供其他信息来解释我如何到达那里。我对这篇长篇文章表示歉意,如果有些内容与您无关,请随时告诉我,我会考虑缩短我的文章。

为什么我想自己编译CLISP:

我有一个 lisp 程序,我想运行,但是当运行它时CLISP安装有brew(我没有 root 访问权限)我收到以下错误:

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

所以我想自己编译CLISP。

到目前为止我一直在使用 SBCL,但我有一个问题 https://stackoverflow.com/questions/35578933/no-mouse-wheel-event-when-shift-key-is-down-shiftmouse-wheel-events并正在寻找其他实现。

我在尝试编译时遇到的问题:

我下载了来源 https://sourceforge.net/projects/clisp/files/latest/download,解开皮重。

然后我尝试跑步./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 and libsigsegv都是用自制软件安装的。但都没有找到。 我尝试添加--with-libsigsegv-prefix=<several values amongst ~/.brew/{opt,opt/libsigsegv,lib,Cellar/libsigsegv,...}: 还是同样的问题。

这也几乎相同这个帖子 https://stackoverflow.com/questions/3901698/is-there-a-way-to-get-the-clisp-compiled-with-dynamic-ffi-support-on-mac-os or this one https://stackoverflow.com/questions/130636/how-to-compile-clisp-2-46。但经过验证的解决方案对我不起作用(没有 root 访问权限的 OSX)。

运行配置时--with-dynamic-ffi and --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 and 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

我没主意了。


在 OSX 上(并且仅针对 OSX 进行开发),检查 Clozure 是一个非常好的主意。http://ccl.clozure.com http://ccl.clozure.com它包括一个 IDE,从速度和总体性能来看,它与 SBCL 相当。您可以使用 Clozure 开发原生 OSX UI 应用程序,当然这些应用程序是不可移植的。如果您遵守标准,那么您甚至可以在 Linux 等上使用 Clozure。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OSX 上编译 clisp-2.49:未找到 LIBFFI 的相关文章

随机推荐

  • 如何在 swift 中下载 Pdf 文件并在文件管理器中查找

    我已经使用下面的代码下载了 pdf 我能够在应用程序数据容器中找到该文件 但从应用程序数据容器中我的设备需要 Mac x 代码或 iTunes 等 我可以给出文档的不同路径或在 iPhone 文件中查找 pdf 的其他位置吗 我可以选择使用
  • vba 是在相等比较中被视为零的空值

    我试图跳过值为零或为空的记录 截至目前 我有以下代码可以明确检查两者 但我觉得第二次检查是多余的 但我想确认我是对的 以便我可以删除 IF 的第二部分 IF CellInValue RowInCrnt ColInCrnt 0 Or Cell
  • git 分支切换 Laravel 时发生 ReflectionException 类不存在

    因此 在决定创建此问题之前 我阅读了大约 100 篇有关此问题的帖子 这个问题实际上非常具体 并且 100 可重现 我创建了一个 git 分支 我们可以称之为storeUpdate 在这个分支中我创建了一个名为 app Http Contr
  • C++ 中的成员函数指针 for_each

    我正在为一个学校项目开发一个 C 小型虚拟机 它应该像 dc 命令一样工作 由输入输出元件 芯片组 CPU 和 RAM 组成 我目前正在研究芯片组 其中我实现了一个小的解析类 以便能够从标准输入或文件中获取一些 Asm 指令 然后将这些指令
  • 样式方面的
    或填充/边距元素

    现在有了 HTML5 和 CSS3 就是使用 br 当可以使用边距 填充时标签会皱起眉头 编辑 这是关于我的用例的 div 元素之间的间距 但也欢迎一般最佳实践建议 实际上 关于它的使用有相当明确的规则 可以追溯到HTML 2 0 http
  • 在不知道列名的情况下重命名单个 pandas DataFrame 列

    我知道我可以使用以下方法重命名单个 pandas DataFrame 列 drugInfo rename columns col 1 col 1 new name inplace True 但我想重命名一个列根据其索引 不知道它的名字 虽然
  • 如何更改TFS中的System.State字段?

    我有需要更改的要求System State现场workitem当其他字段发生变化时 我知道 TFS 工作流程是基于状态的 即根据状态您可以更改其他字段的值 但如何走另一条路呢 Mayur 我认为您无法通过使用内置工作项工作流程来实现这一目标
  • Mysql 获取刚刚插入的行

    所以我正在设计一个函数 将一行插入 MySQL 数据库 该表有一个启用了自动增量的主键 所以我不插入该列的值 但PK是整个表中唯一唯一的列 如何获取刚刚插入的行 如果该函数在流量较小的情况下我看不到问题 但是当其负载越来越重时 我可以看到一
  • 优化 SSE 代码

    我目前正在为 Java 应用程序开发一个 C 模块 需要一些性能改进 请参阅提高网络编码性能 https stackoverflow com questions 7737488 improving performance of networ
  • 如何从命令行获取 Ruby 文档 [重复]

    这个问题在这里已经有答案了 有没有办法找出我的哪一部分ri不显示 Ruby 文档的命令 ruby version ruby 1 9 3p392 2013 02 22 revision 39386 i686 linux ri version
  • 从 pandas 中具有多个值的列创建虚拟对象

    我正在寻找一种Python式的方法来处理以下问题 The pandas get dummies 方法非常适合从数据帧的分类列创建虚拟对象 例如 如果该列的值位于 A B get dummies 创建 2 个虚拟变量并相应地分配 0 或 1
  • 如何使用 Spring Jdbctemplate.update(String sql, obj...args) 获取插入的 id

    我正在使用 Jdbctemplate 我需要插入查询的 id 我读到我必须构建一个特定的PreparedStatement 并使用GenerateKeyHolder 对象 问题是在我的应用程序中所有插入方法都使用此 JdbcTemplate
  • 如何使用 AJAX 请求打开 jQuery UI 对话框?

    在我的网页上有一个 jQuery UI 对话框 当我单击按钮 创建新用户 时 它会打开一个新窗口 我的问题是如何使用 AJAX 请求打开该窗口 从另一个页面打开对话框表单会很好 例如 dialog html div title Create
  • Log4J 1.2 属性配置器 -> Log4J2

    目前 我们的应用程序使用 Log4J 1 2 并使用以下任一方式对其进行配置 File file PropertyConfigurator configure file getAbsolutePath or URL url Property
  • Mailgun:消息“已接受”,但需要很长时间才能送达(或未送达)

    我正在将 Mailgun 用于我维护的网站 通常 Mailgun 工作得很好 但我遇到了一个奇怪的问题 我的脚本调用 HTTP API 使用 Mailgun 发送消息 然后这些消息在我的日志中显示为 已接受 但随后需要很长时间才能 传送 通
  • 获取 HTML 元素中单击位置的文本

    我有一个包含一些文本的 div 元素 当用户单击该 div 内的单词时 我想突出显示该单词 为了做到这一点 我需要知道点击发生在文本中的哪个字符位置 这样我就可以找到附近的空白并在单词周围插入一些格式 找出文本中点击发生的位置是这里的技巧
  • 自动完成后端

    这是一个面试问题 设计一个自动完成的分布式后端 我会回答如下 自动完成是按给定后缀在字典中进行搜索 这本词典可能应该被组织为trie 该词典是根据最常见的查询构建的 但这是另一回事了 现在我假设字典不会经常更改 例如每天一次而不是每毫秒一次
  • 使用断言的最佳实践?

    使用是否存在性能或代码维护问题assert作为标准代码的一部分而不是仅将其用于调试目的 Is assert x gt 0 x is less than zero 比更好或更差 if x lt 0 raise Exception x is l
  • C++ 初始化数组指针

    如何初始化指向文字数组的指针 我希望 grid 指向新分配的 int 数组 1 2 3 int grid new int 3 grid 1 2 3 谢谢 你不能初始化这样就可以动态分配数组 你也不能assign以这种方式到数组 动态或静态
  • 在 OSX 上编译 clisp-2.49:未找到 LIBFFI

    TL DR Even if libffi似乎已安装 configure即使我给它添加 正确的 前缀 脚本也找不到它 这篇文章的最后一部分 是我陷入困境的地方 我仅提供其他信息来解释我如何到达那里 我对这篇长篇文章表示歉意 如果有些内容与您无