我遇到了使用MLton compiler在Docker容器中安装和运行Alpine Linux的问题。 有没有办法在这个系统上安装这个编译器?
使用标准的'高山基本图像和MLton的二进制分布:
$ curl http://sourceforge.net/projects/mlton/files/mlton/20130715/mlton-20130715-1.amd64-linux.tgz --output mlton-20130715-1.amd64-linux.tgz
$ docker build .
使用以下Dockerfile:
FROM alpine
COPY mlton-20130715-1.amd64-linux.tgz /
RUN apk add --no-cache bash build-base gmp-dev linux-headers \
&& tar xf /mlton-20130715-1.amd64-linux.tgz \
--directory /usr/ \
--strip-components 1 \
&& echo 'print "Hello, world!\n";' >> hello-world.sml \
&& mlton hello-world.sml
Docker构建失败并显示以下错误消息,可能是因为缺少glibc
。
/ usr / bin / mlton:第52行:/ usr / lib / mlton / mlton-compile:没有这样的文件或目录
与上面相同,嵌入glibc
的基础Docker镜像:
FROM frolvlad/alpine-glibc
这次,mlton
会运行,但会产生以下错误:
/usr/lib/gcc/x86_64-alpine-linux-musl/6.4.0 /../../../../ x86_64-alpine-linux-musl / bin / ld:/ usr / lib /mlton/targets/self/libmlton.a(platform.o):在创建共享对象时,不能使用针对`.rodata.str1.8'的重定位R_X86_64_32;用-fPIC重新编译
...
/usr/lib/gcc/x86_64-alpine-linux-musl/6.4.0 /../../../../ x86_64-alpine-linux-musl / bin / ld:最终链接失败:关于产出的不可代表部分
collect2:错误:ld返回1退出状态
调用系统失败,退出状态为1:
gcc -o hello-world /tmp/fileGEluFu.o /tmp/fileYnNjh9.o -L / usr / lib / mlton / targets / self -lmlton -lgdtoa -lm -lgmp -m64 -Wl,-znoexecstack
关于如何解决这个问题的任何想法?