我需要编译和静态链接一个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