1

我最近切换到 Slackware 来学习如何使用更高级的 Linux 发行版。它默认安装了 GNU Guile 2.0,但我从源代码构建了 Guile 3.0。当我尝试构建 guile-json 时,我在运行配置脚本时收到了这条消息。指示说要跑./configure --prefix=<guile-prefix>。我正在尝试做的事情的前缀是什么,或者我将如何找到它?

checking for a BSD-compatible install... /usr/bin/ginstall -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
configure: checking for guile 3.0
configure: checking for guile 2.2
configure: checking for guile 2.0
configure: found guile 2.0
checking for guile-2.0... no
checking for guile2.0... no
checking for guile-2... no
checking for guile2... no
checking for guile... /usr/local/bin/guile
configure: error: found development files for Guile 2.0, but /usr/local/bin/guile has effective version 3.0
4

1 回答 1

3

自述文件告诉您使用./configure --prefix=<guile-prefix>. 一般来说,这意味着您使用与构建 guile 相同的前缀值,因此/usr/local. 这已经是自动工具的默认值,所以我认为这对您没有任何帮助。

您的问题是配置脚本检测到系统 guile 库,它们是 2.0,但您的 guile 3.0 是 $PATH 中的第一个,这是不兼容的。您应该通过设置几个环境变量来确保配置脚本能够找到正确的 guile 版本:

export GUILE_LOAD_PATH=/usr/local/share/guile/site/3.0
export GUILE_LOAD_COMPILED_PATH=/usr/local/lib/guile/3.0/site-ccache
./configure --prefix=/usr/local

显然调整这些值,使它们与您安装库的实际位置相对应。

您可能应该将这些变量添加到您的.profile或其他东西中,以便在运行 guile 时始终正确定义它们。

于 2020-06-26T10:52:59.977 回答