'Can't compile when using archive/tar

I am trying to use archive/tar within my Golang project. However, when I compile it, I get the following error:

/usr/local/go/pkg/tool/linux_amd64/link: /go-cache/10/1020ddd253c007d4f0bbed6c73d75297ac475bbc40d485e357efc1e7584bc24f-d(_go_.o): cannot use dynamic imports with -d flag
/usr/local/go/pkg/tool/linux_amd64/link: /go-cache/73/735aa16c44473681079e1f6b4a517de41fcac801aa803f5f84f6ebcb6436f3e6-d(_go_.o): cannot use dynamic imports with -d flag

Here is how I am compiling my project, within an golang:1.17-alpine3.14 Docker container:

go build -ldflags "-d -X main.Something=$SOMETHING -X main.Another=$ANOTHER -linkmode external -extldflags -static" -tags netgo -o prog cmd/prog/*.go

Without the import, everything compiles fine. All I need to do to trigger this is the following:

import (
    archive/tar
    ...
)
...

func someFunc() {
    ...
    tarWriter := tar.NewWriter(file)
    defer tarWriter.Close()
}

Allowing this to be dynamically linked isn't something I can do, given requirements of the program. How can I get this to link statically?

go


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source