如何设置已编译的 guile 脚本,以便它找到其字节码并且不再自动编译?

问题描述 投票:0回答:1

我想在文件系统中的某个地方有一个可执行的 guile 脚本

prog

我想用

guild compile -o prog.go prog
对它进行字节编译,这样它就不再需要编译,从而快速启动。

我不知道在哪里放置

prog.go
文件,以便程序不会自动编译
$HOME/.cache/guile/...
(我不想淹没每个用户的HOME缓存并让其冗余编译)。因为无论我把
prog.go
放在哪里并通过
GUILE_LOAD_COMPILED_PATH
指向它,guile 都希望将程序自动编译到我的 HOME 缓存中(这正是我想要避免的,也是我问的原因)。

示例:

PATH=$PWD GUILE_LOAD_COMPILED_PATH=$PWD prog
# => auto-compiles :(

虽然这些案例有效(好的,但为什么?):

PATH=. GUILE_LOAD_COMPILED_PATH=. prog
# works

PATH=. GUILE_LOAD_COMPILED_PATH=$PWD prog
# works

GUILE_LOAD_COMPILED_PATH=$PWD $PWD/prog
# works

问题似乎是在需要使用 PATH 搜索 prog 时出现的?听起来像是一个错误?

path scheme guile auto-compile
1个回答
0
投票
PATH=$PWD GUILE_LOAD_COMPILED_PATH=$PWD prog

这个会自动编译,因为你的 shell 在运行脚本时使用

prog
的绝对路径(通常,通过连接
$PATH
目录和命令名称创建的路径),并且 guile 在
%load-compiled-path
中查找该路径
列表。因此,如果您当前的工作目录是
/home/bob/bin
,它将查找不存在的
/home/bob/bin/home/bob/bin/prog.go
。当
PATH
GUILE_LOAD_COMPILED_PATH
只是
.
时,它会寻找确实存在的
/home/bob/bin/prog.go

注意:理想情况下,您可以将编译后的文件放在从

(%site-ccache-dir)
返回的目录开始的路径中,这样您就不必费力设置环境变量来指向自定义位置。

© www.soinside.com 2019 - 2024. All rights reserved.