首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >苹果M1 Docker错误cc1plus:错误:-march的未知值‘armv8-a-cc1plus=armv8-a’

苹果M1 Docker错误cc1plus:错误:-march的未知值‘armv8-a-cc1plus=armv8-a’
EN

Stack Overflow用户
提问于 2021-05-31 16:39:39
回答 1查看 152关注 0票数 0

在使用M1芯片的Mac上构建docker镜像时出现此错误。

我尝试过的:从docker site安装苹果Silicon Graphic M1的docker

尝试从Docker安装RocksDB失败

代码语言:javascript
复制
# docker.local
FROM golang:1.12.4-alpine3.9
RUN apk add bash build-base grep git

# Install RocksDB
RUN apk add coreutils linux-headers perl zlib-dev bzip2-dev lz4-dev snappy-dev zstd-libs zstd-dev && \
    cd /tmp && \
    wget -O - https://github.com/facebook/rocksdb/archive/v5.18.3.tar.gz | tar xz && \
    cd /tmp/rocksdb* && \
    make -j $(nproc) install-shared OPT=-g0 USE_RTTI=1 && \
    rm -R /tmp/rocksdb* && \
    apk del coreutils linux-headers perl

错误:

代码语言:javascript
复制
#6 9.903 cc1plus: error: unknown value 'armv8-a-march=armv8-a' for -march

#6 9.903 cc1plus: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a native

#6 9.906 cc1plus: error: unknown value 'armv8-a-march=armv8-a' for -march

#6 9.906 cc1plus: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a native

#6 9.907 install -d /usr/local/lib

#6 9.908   CC       shared-objects/cache/clock_cache.o

#6 9.908   CC       shared-objects/cache/lru_cache.o

#6 9.909   CC       shared-objects/cache/sharded_cache.o

#6 9.909 for header_dir in `find "include/rocksdb" -type d`; do \

#6 9.909 install -d /usr/local/$header_dir; \

#6 9.909 done

#6 9.911 cc1plus: error: unknown value 'armv8-a-march=armv8-a' for -march

#6 9.911 cc1plus: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a native

#6 9.912 make: *** [Makefile:684: shared-objects/cache/clock_cache.o] Error 1

#6 9.912 make: *** Waiting for unfinished jobs....

#6 9.912 make: *** [Makefile:684: shared-objects/cache/lru_cache.o] Error 1

#6 9.913 make: *** [Makefile:684: shared-objects/cache/sharded_cache.o] Error 1

#6 9.914 for header in `find "include/rocksdb" -type f -name *.h`; do \

#6 9.914 install -C -m 644 $header /usr/local/$header; \

#6 9.914 done
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-01 01:27:13

有几个问题需要解决。您所拥有的dockerfile将下载一个基础golang ARM镜像,并尝试使用该镜像进行构建。这很好,只要所需的库“知道如何”使用arm架构构建即可。如果他们不知道如何在arm下构建(就像这里的情况一样),您可能想要尝试在golang的AMD映像下构建。

英特尔/ AMD容器将在M1上的ARM docker下运行。有几种方法可以在M1上构建AMD容器。您可以使用buildkit,然后:docker buildx build --platform linux/amd64 .,或者,您可以通过修改Dockerfile将拱门添加到源图像中,使其包含如下内容:

代码语言:javascript
复制
FROM --platform=linux/amd64 golang:1.12.4-alpine3.9

它将使用golang镜像的amd64拱门(假设存在一个)。这是我经常用来在ARM上构建映像的方法。即使docker是本地ARM,也能正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67770443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档