If you install go directly in your host system you must also install the libraries of s390x somewhere (except if it statically linked).
The easiest way to test this is to install debian chroot, with something like: Check binftm_misc is configured: # cat /proc/sys/fs/binfmt_misc/qemu-s390x enabled interpreter //qemu-s390x flags: OC offset 0 magic 7f454c4602020100000000000000000000020016 mask ffffffffffffff00fffffffffffffffffffeffff Then you can install a debian sid system into a directory: # debootstrap --arch=s390x --foreign sid chroot-s390x/ # cp .../qemu-s390x chroot-s390x/ # sudo chroot chroot-s390x/ /debootstrap/debootstrap --second-stage And then you can use it with: # sudo chroot s390x-chroot/ # uname -m s390x # apt install golang-go ... -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1886793 Title: "go install" command fails while running inside s390x docker container on x86_64 host using qemu Status in QEMU: New Bug description: Steps to reproduce the issue: Register x86_64 host with the latest qemu-user-static. docker run --rm --privileged multiarch/qemu-user-static --reset -p yes Build the following Docker Image using following Dockerfile.s390x using command docker build -t test/crossbuild:latest-s390x -f Dockerfile.s390x . Dockerfile.s390x ############################################## FROM alpine:3.11 as qemu ARG QEMU_VERSION=5.0.0-2 ARG QEMU_ARCHS="s390x" RUN apk --update add curl #Enable non-native runs on amd64 architecture hosts RUN for i in ${QEMU_ARCHS}; do curl -L https://github.com/multiarch/qemu-user-static/releases/download/v${QEMU_VERSION}/qemu-${i}-static.tar.gz | tar zxvf - -C /usr/bin; done RUN chmod +x /usr/bin/qemu-* FROM s390x/golang:1.14.2-alpine3.11 MAINTAINER LoZ Open Source Ecosystem (https://www.ibm.com/developerworks/community/groups/community/lozopensource) ARG MANIFEST_TOOL_VERSION=v1.0.2 #Enable non-native builds of this image on an amd64 hosts. #This must be the first RUN command in this file! COPY --from=qemu /usr/bin/qemu-*-static /usr/bin/ #Install su-exec for use in the entrypoint.sh (so processes run as the right user) #Install bash for the entry script (and because it's generally useful) #Install curl to download glide #Install git for fetching Go dependencies #Install ssh for fetching Go dependencies #Install mercurial for fetching go dependencies #Install wget since it's useful for fetching #Install make for building things #Install util-linux for column command (used for output formatting). #Install grep and sed for use in some Makefiles (e.g. pulling versions out of glide.yaml) #Install shadow for useradd (it allows to use big UID) RUN apk update && apk add --no-cache su-exec curl bash git openssh mercurial make wget util-linux tini file grep sed shadow RUN apk upgrade --no-cache #Disable ssh host key checking RUN echo 'Host *' >> /etc/ssh/ssh_config \ && echo ' StrictHostKeyChecking no' >> /etc/ssh/ssh_config #Disable cgo so that binaries we build will be fully static. ENV CGO_ENABLED=0 #Recompile the standard library with cgo disabled. This prevents the standard library from being #marked stale, causing full rebuilds every time. RUN go install -v std #Install glide RUN go get github.com/Masterminds/glide ENV GLIDE_HOME /home/user/.glide #Install dep RUN go get github.com/golang/dep/cmd/dep #Install ginkgo CLI tool for running tests RUN go get github.com/onsi/ginkgo/ginkgo #Install linting tools. RUN wget -O - -q https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s v1.20.0 RUN golangci-lint --version #Install license checking tool. RUN go get github.com/pmezard/licenses #Install tool to merge coverage reports. RUN go get github.com/wadey/gocovmerge #Install CLI tool for working with yaml files RUN go get github.com/mikefarah/yaml #Delete all the Go sources that were downloaded, we only rely on the binaries RUN rm -rf /go/src/* #Install vgo (should be removed once we take Go 1.11) RUN go get -u golang.org/x/vgo #Ensure that everything under the GOPATH is writable by everyone RUN chmod -R 777 $GOPATH RUN curl -sSL https://github.com/estesp/manifest-tool/releases/download/${MANIFEST_TOOL_VERSION}/manifest-tool-linux-s390x > manifest-tool && \ chmod +x manifest-tool && \ mv manifest-tool /usr/bin/ COPY entrypoint.sh /usr/local/bin/entrypoint.sh ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/entrypoint.sh"] ################################################################## The build just hangs at RUN go install -v std Also, while running the same command inside s390x container on x86_64 host, error Illegal instruction (core dumped) is thrown. Register x86_64 host with the latest qemu-user-static. docker run --rm --privileged multiarch/qemu-user-static --reset -p yes docker run -it -v /home/test/qemu-s390x-static:/usr/bin/qemu-s390x- static s390x/golang:1.14.2-alpine3.11 Inside s390x container: apk update && apk add --no-cache su-exec curl bash git openssh mercurial make wget util-linux tini file grep sed shadow apk upgrade --no-cache #Disable cgo so that binaries we build will be fully static. export CGO_ENABLED=0 go install -v std This gives the following error: Illegal instruction (core dumped) Environment: x86_64 Ub18.04 4.15.0-101-generic Ubuntu SMP x86_64 GNU/Linux QEMU user static version: 5.0.0-2 Container application: Docker Client: Docker Engine - Community Version: 19.03.11 API version: 1.40 Go version: go1.13.10 Git commit: 42e35e61f3 Built: Mon Jun 1 09:12:22 2020 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.11 API version: 1.40 (minimum version 1.12) Go version: go1.13.10 Git commit: 42e35e61f3 Built: Mon Jun 1 09:10:54 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683 Additional information optionally: When I build the same Dockerfile.s390x on an s390x machine, it is built successfully. To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1886793/+subscriptions