go build ldflags not working as expected #5710
Answered
by
matiasinsaurralde
phanirithvij
asked this question in
Q&A
-
With the example given in the go sdk tutorial I tried passing ldflags to the go build command build = build.WithExec([]string{
"go", "build",
// NOT WORKING (try running after uncommenting)
// "-buildmode=pie", "-trimpath", `-ldflags='-s -extldflags "-static"'`,
// "-buildmode=pie", "-trimpath", `-ldflags="-s -extldflags '-static'"`,
// Works somehow
"-buildmode=pie", "-trimpath", `-ldflags`, `-s -extldflags "-static"`,
"-o", path,
}) Error:29: exec go build -buildmode=pie -trimpath -ldflags='-s -extldflags "-static"' -o build/linux/amd64/
29: [2.03s] invalid value "'-s -extldflags \"-static\"'" for flag -ldflags: missing =<value> in <pattern>=<value>
29: [2.03s] usage: go build [-o output] [build flags] [packages]
29: [2.03s] Run 'go help build' for details.
29: exec go build -buildmode=pie -trimpath -ldflags='-s -extldflags "-static"' -o build/linux/amd64/ ERROR: process "go build -buildmode=pie -trimpath -ldflags='-s -extldflags \"-static\"' -o build/linux/amd64/" did not complete successfully: exit code: 2
26: exec go build -buildmode=pie -trimpath -ldflags='-s -extldflags "-static"' -o build/windows/amd64/
26: [2.03s] invalid value "'-s -extldflags \"-static\"'" for flag -ldflags: missing =<value> in <pattern>=<value>
26: [2.03s] usage: go build [-o output] [build flags] [packages]
26: [2.03s] Run 'go help build' for details.
input:1: container.from.withDirectory.withWorkdir.withEnvVariable.withEnvVariable.withEnvVariable.withExec.directory process "go build -buildmode=pie -trimpath -ldflags='-s -extldflags \"-static\"' -o build/linux/amd64/" did not complete successfully: exit code: 2
Stdout:
Stderr:
invalid value "'-s -extldflags \"-static\"'" for flag -ldflags: missing =<value> in <pattern>=<value>
usage: go build [-o output] [build flags] [packages]
Run 'go help build' for details.
Please visit https://dagger.io/help#go for troubleshooting guidance. I made a sample repo here, which builds the buildscript itself with |
Beta Was this translation helpful? Give feedback.
Answered by
matiasinsaurralde
Aug 29, 2023
Replies: 2 comments
-
@phanirithvij Try: build = build.WithExec([]string{
"go", "build",
"-buildmode=pie", "-trimpath", "-ldflags=-s -extldflags='-static'",
"-o", path,
}) Output:
|
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
marcosnils
-
But why is that working? Shouldn't one of these work?
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@phanirithvij Try:
Output: