如何静态链接一个使用扩展的Chicken Scheme程序



我需要编译和静态链接一个Chicken程序。我希望使用许多扩展,最值得注意的是http-client

我可以用下面的命令编译源代码:

csc -compile-syntax -static linux-setup.scm

csc -R http-client -compile-syntax -static linux-setup.scm

但是当我运行它时,我得到以下错误:

Error: (require) cannot load extension: http-client
    Call history:
    ##sys#require           <--

我也在源代码中尝试了(declare (uses http-client)),没有成功:

linux-setup.o: In function `f_369':
/mnt/data/Documents/Programming/chicken-scheme/linux-setup/linux-setup.c:219:
 undefined reference to `C_http_2dclient_toplevel'
collect2: error: ld returned 1 exit status
Error: shell command terminated with non-zero exit status 256: 'gcc' 'linux-setup.o'
 -o 'linux-setup' -L"/usr/lib"  -Wl,-R"/usr/lib" -static '/usr/lib/libchicken.a' -lm -ldl
静态链接是我需要的东西。这不是XY问题。我需要我的可执行文件在没有依赖关系的新安装的Linux系统上运行。这是我最初从Common Lisp切换到Scheme的主要原因。 请问我做错了什么?

假设您的程序在a程序中。供应链管理文件:

csc -deploy a-program.scm
cd a-program/
chicken-install -deploy -p $PWD http-client

…果不其然!

edit:结果是正确的答案张贴的问题是解决在这个文件:http://www.foldling.org/scheme.html#compiling-statically-linked-chicken-scheme-programs-with-extensions

相关内容

  • 没有找到相关文章

最新更新