Ishrat
Ishrat

Reputation: 31

Error compiling Go from source in an Alpine Docker container: "loadinternal: cannot find runtime/cgo"

I'm trying to build an Alpine Docker image for the FIPS-enabled version of Go. To do this, I am trying to build Go from source using the dev.boringcrypto branch of the golang/go repository.

Upon running ./all.bash, I get the following errors:

Step 4/4 : RUN cd go/src && ./all.bash
 ---> Running in 00db552598f7
Building Go cmd/dist using /usr/lib/go.
# _/go/src/cmd/dist
loadinternal: cannot find runtime/cgo
/usr/lib/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/lib/gcc/x86_64-alpine-linux-musl/6.4.0/../../../../x86_64- 
alpine-linux-musl/bin/ld: cannot find Scrt1.o: No such file or directory
/usr/lib/gcc/x86_64-alpine-linux-musl/6.4.0/../../../../x86_64- 
alpine-linux-musl/bin/ld: cannot find crti.o: No such file or directory
/usr/lib/gcc/x86_64-alpine-linux-musl/6.4.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lssp_nonshared
collect2: error: ld returned 1 exit status

The command '/bin/bash -c cd go/src && ./all.bash' returned a non-zero code: 2

Which causes the installation tests to fail and kicks me out of the Docker image build.

I have the gcc installed on the image, and tried setting the environment variable CGO_ENABLED=0 as suggested in other questions, but neither of these things seem to alleviate the problem.

I'm at my wits end with this problem. Has anybody else run into similar issues in the past? I don't understand why this is happening, as the build runs fine in an Ubuntu container.

Thanks!

Upvotes: 3

Views: 5048

Answers (2)

Laurens
Laurens

Reputation: 71

I had the same error messages, although I was compiling a different project.

It turns out that alpine needs to have the musl-dev package installed for this to work, so I think you need to make sure that is included in your Dockerfile, or manually install it by running apk add --no-cache musl-dev.

Upvotes: 7

Vorsprung
Vorsprung

Reputation: 34367

Either go isn't correctly installed on the image or the GOROOT is wrong

Put go tool dist banner and go tool dist env in your all.bash for clues

Upvotes: 2

Related Questions