2

我在使用Alpine LinuxDocker容器中安装和运行MLton 编译器时遇到问题。有没有办法在这个系统上安装这个编译器?

尝试#1

使用标准的 `alpine 基础镜像和 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:没有这样的文件或目录

尝试#2

与上面相同,具有嵌入的基本 Docker 映像glibc

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): 重定位 R_X86_64_32 对 `.rodata.str1.8' 在制作共享对象时不能使用;使用 -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

关于如何解决这个问题的任何想法?

4

0 回答 0