Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Crystal lang 我能';t在alpinedge下建立静态二进制的crystal程序_Crystal Lang - Fatal编程技术网

Crystal lang 我能';t在alpinedge下建立静态二进制的crystal程序

Crystal lang 我能';t在alpinedge下建立静态二进制的crystal程序,crystal-lang,Crystal Lang,我正在尝试编译最简单的crystal程序,但使用--static标志: 守则: #x.cr “测试” 汇编: crystal build --static x.cr 结果是: /usr/lib/gcc/x86_64-alpine-linux-musl/8.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lgc (this usually means you need to install the developmen

我正在尝试编译最简单的crystal程序,但使用
--static
标志:

守则:

#x.cr
“测试”
汇编:

crystal build --static x.cr
结果是:

/usr/lib/gcc/x86_64-alpine-linux-musl/8.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lgc (this usually means you need to install the development package for libgc)
collect2: error: ld returned 1 exit status
Error: execution of command failed with code: 1: `cc "${@}" -o '/app/x'  -rdynamic -static  /usr/lib/libpcre.a -lgc /usr/lib/libpthread.a /usr/lib/crystal/core/ext/libcrystal.a /usr/lib/libevent.a /usr/lib/librt.a -L/usr/lib -L/usr/local/lib`
我猜我少了一些apk的包。我尝试了
gc
gc-dev
musl-dev
-运气不好-是与包相关,还是我遗漏了什么

apk add crystal shards

# equivalent to build-essentials 
apk add --virtual build-dependencies build-base gcc

# or a more complete build dependencies pkg:
# apk add --update alpine-sdk

crystal build --static x.cr

我已经在一个全新的阿尔卑斯山容器上测试过了。

它缺失了,但这是回购协议中Crystal包所要求的(如果您从那里安装Crystal)。不过,您可能需要该版本,正如。

中所述,答案似乎是
gc-dev
不再在
edge
上提供静态库。过去是这样,直到
3.9
的版本中仍然存在这种情况


有一个PR可以解决这个问题:

你使用的是什么版本的Crystal?你是如何安装的?对不起,我的错-这是最重要的信息。我使用了阿尔卑斯山:边缘docker图像和水晶0.27.2-r0.Hm,这真的很奇怪
crystal
on
alpine:edge
依赖于此处明显缺失的
gc开发。你能确保它安装正确吗?是的,我也安装了
gc-dev
。但是我注意到,大多数软件包也有一个
*-static
版本(即
sqlite static
等)。存储库中没有
gc static
包-可能是这样的。谢谢您的帮助-不过我试过了。问题是,我使用的是
alpine:edge
图像,因为我需要crystal
0.27.2
(不是针对这个特定的代码,而是针对更大的项目)。使用
virtutal
软件包或
alpine sdk
会引发相同的错误。谢谢!这就是我一直在寻找的答案。我下载了
gc
源代码和Alpine提供的补丁,并使用
--enable static
手动编译了它。对于正在为此而挣扎的人们,这里是我的Dockerfile中的一段摘录:
运行apk add alpine sdk libatomic_ops-dev linux headers WORKDIR/tmp/gc RUN patch-p1