go env:
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\IEUser\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\IEUser\go
set GOPROXY=
set GORACE=
set GOROOT=C:\Go
set GOTMPDIR=
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\cygwin64\tmp\go-build115470254=/tmp/go-build -gno-record-gcc-switches
In my build script:
$env:CGO_ENABLED = "1"
$env:GOOS = "windows"
$env:GOARCH = "386"
$env:CC = "C:\Qt\Qt5.11.1\Tools\mingw530_32\bin\gcc.exe"
It works fine if I run that PowerShell script directly on the Windows:
powershell.exe : WORK=C:\Users\IEUser\AppData\Local\Temp\go-build363199970
"C:\\Go\\pkg\\tool\\windows_amd64\\link.exe" -o "C:\\Users\\IEUser\\AppData\\Local\\Temp\\go-build363199970\\b001\\exe\\a.out.exe" -importcfg
"C:\\Users\\IEUser\\AppData\\Local\\Temp\\go-build363199970\\b001\\importcfg.link" -buildmode=exe
-buildid=_Pna6rQZInvPOTo6ovpT/eNgRkOxfyIfNEc923MEh/LM048ylaWCky7xp48PwR/_Pna6rQZInvPOTo6ovpT -X ... "-extld=C:\\Qt\\Qt5.11.1\\Tools\\mingw530_32\\bin\\gcc.exe"
"C:\\Users\\IEUser\\AppData\\Local\\go-build\\07\\07d3feb4ac36b40e45669e164e0565963f209a2510b6f11f5237d6d554c024e3-d"
"C:\\Go\\pkg\\tool\\windows_amd64\\buildid.exe" -w "C:\\Users\\IEUser\\AppData\\Local\\Temp\\go-build363199970\\b001\\exe\\a.out.exe" # internal
mkdir -p C:\Users\IEUser\drone-workspace\
cp $WORK\b001\exe\a.out.exe C:\Users\IEUser\drone-workspace\xx.exe
But if I run it via ssh (using Cygwin), then I got:
WORK=C:\cygwin64\tmp\go-build635580042
"C:\\Go\\pkg\\tool\\windows_amd64\\link.exe" -o "C:\\cygwin64\\tmp\\go-build635580042\\b001\\exe\\a.out.exe" -importcfg "C:\\cygwin64\\tmp\\go-build635580042\\b001\\importcfg.link" -buildmode=exe -buildid=_Pna6rQZInvPOTo6ovpT/eNgRkOxfyIfNEc923MEh/LM048ylaWCky7xp48PwR/_Pna6rQZInvPOTo6ovpT -X ... "-extld=C:\\Qt\\Qt5.11.1\\Tools\\mingw530_32\\bin\\gcc.exe" "C:\\Users\\IEUser\\AppData\\Local\\go-build\\07\\07d3feb4ac36b40e45669e164e0565963f209a2510b6f11f5237d6d554c024e3-d"
C:\Go\pkg\tool\windows_amd64\link.exe: running C:\Qt\Qt5.11.1\Tools\mingw530_32\bin\gcc.exe failed: exit status 1
By using go build -work
and re-run the command:
C:\Users\IEUser\AppData\Local\go-build\2c\2c0ce927bab57cfa9fdde5b6dde060141e23f7a5698ed2fcd22b30a961d1701a-d(go.o): object is [windows 386 go1.11.1 X:framepointer] expected [windows amd64 go1.11.1 ]
C:\Go\pkg\tool\windows_amd64\link.exe: C:\Users\IEUser\AppData\Local\go-build\2c\2c0ce927bab57cfa9fdde5b6dde060141e23f7a5698ed2fcd22b30a961d1701a-d: not package main
Why?
Thu Nov 1 22:23:58 +07 2018
So, this command does not work if running via ssh:
"C:\Go\pkg\tool\windows_amd64\link.exe" -o "C:\cygwin64\tmp\go-build635580042\b001\exe\a.out.exe" -importcfg "C:\cygwin64\tmp\go-build635580042\b001\importcfg.link" -buildmode=exe -buildid=_Pna6rQZInvPOTo6ovpT/eNgRkOxfyIfNEc923MEh/LM048ylaWCky7xp48PwR/_Pna6rQZInvPOTo6ovpT "-extld=C:\Qt\Qt5.11.1\Tools\mingw530_32\bin\gcc.exe" "C:\Users\IEUser\AppData\Local\go-build\07\07d3feb4ac36b40e45669e164e0565963f209a2510b6f11f5237d6d554c024e3-d"
If I run it directly, a.out.exe
is created:
Directory: C:\cygwin64\tmp\go-build635580042\b001\exe
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 11/1/2018 8:32 AM 28085202 a.out.exe
It may be related to GOARCH
when running via Cygwin because if I set GOARCH
to 386, then I only got:
IEUser@MSEDGEWIN10 /cygdrive/c/Users/IEUser/drone-workspace
$ go env GOARCH
amd64
IEUser@MSEDGEWIN10 /cygdrive/c/Users/IEUser/drone-workspace
$ export GOARCH=386
IEUser@MSEDGEWIN10 /cygdrive/c/Users/IEUser/drone-workspace
$ cmd.exe /C "C:\\Go\\pkg\\tool\\windows_amd64\\link.exe" -o "C:\\cygwin64\\tmp\\go-build635580042\\b001\\exe\\a.out.exe" -importcfg "C:\\cygwin64\\tmp\\go-build635580042\\b001\\importcfg.link" -buildmode=exe -buildid=_Pna6rQZInvPOTo6ovpT/eNgRkOxfyIfNEc923MEh/LM048ylaWCky7xp48PwR/_Pna6rQZInvPOTo6ovpT "-extld=C:\\Qt\\Qt5.11.1\\Tools\\mingw530_32\\bin\\gcc.exe" "C:\\Users\\IEUser\\AppData\\Local\\go-build\\07\\07d3feb4ac36b40e45669e164e0565963f209a2510b6f11f5237d6d554c024e3-d"
C:\Go\pkg\tool\windows_amd64\link.exe: running C:\Qt\Qt5.11.1\Tools\mingw530_32\bin\gcc.exe failed: exit status 1
How can I continue debug this?
Fri Nov 2 00:03:07 +07 2018
By adding -c
(dump call graph) and -v
(print link trace) to link.exe
:
58.41 host link: "C:\Qt\Qt5.11.1\Tools\mingw530_32\bin\gcc.exe" "-m32" "-mconsole" "-o" "C:\cygwin64\tmp\go-build635580042\b001\exe\a.out.exe" "C:\cygwin64\tmp\go-link-125134263\go.o" "C:\cygwin64\tmp\go-link-125134263\000000.o" "C:\cygwin64\tmp\go-link-125134263\000001.o" "C:\cygwin64\tmp\go-link-125134263\000002.o" "C:\cygwin64\tmp\go-link-125134263\000003.o" "C:\cygwin64\tmp\go-link-125134263\000004.o" "C:\cygwin64\tmp\go-link-125134263\000005.o" "C:\cygwin64\tmp\go-link-125134263\000006.o" "C:\cygwin64\tmp\go-link-125134263\000007.o" "C:\cygwin64\tmp\go-link-125134263\000008.o" "C:\cygwin64\tmp\go-link-125134263\000009.o" "C:\cygwin64\tmp\go-link-125134263\000010.o" "-g" "-O2" "-lrasapi32" "-g" "-O2" "-Wl,-T,C:\cygwin64\tmp\go-link-125134263\fix_debug_gdb_scripts.ld" "-Wl,--start-group" "-lmingwex" "-lmingw32" "-Wl,--end-group" "-lwinmm" "-lws2_32" "-lkernel32"
C:\Go\pkg\tool\windows_amd64\link.exe: running C:\Qt\Qt5.11.1\Tools\mingw530_32\bin\gcc.exe failed: exit status 1
How can I keep all *.o
files, so I can re-run that command to see why does it failed?
$ /cygdrive/c/Qt/Qt5.11.1/Tools/mingw530_32/bin/gcc.exe "-m32" "-mconsole" "-o" "C:\\cygwin64\\tmp\\go-build635580042\\b001\\exe\\a.out.exe" "C:\\cygwin64\\tmp\\go-link-125134263\\go.o" "C:\\cygwin64\\tmp\\go-link-125134263\\000000.o" "C:\\cygwin64\\tmp\\go-link-125134263\\000001.o" "C:\\cygwin64\\tmp\\go-link-125134263\\000002.o" "C:\\cygwin64\\tmp\\go-link-125134263\\000003.o" "C:\\cygwin64\\tmp\\go-link-125134263\\000004.o" "C:\\cygwin64\\tmp\\go-link-125134263\\000005.o" "C:\\cygwin64\\tmp\\go-link-125134263\\000006.o" "C:\\cygwin64\\tmp\\go-link-125134263\\000007.o" "C:\\cygwin64\\tmp\\go-link-125134263\\000008.o" "C:\\cygwin64\\tmp\\go-link-125134263\\000009.o" "C:\\cygwin64\\tmp\\go-link-125134263\\000010.o" "-g" "-O2" "-lrasapi32" "-g" "-O2" "-Wl,-T,C:\\cygwin64\\tmp\\go-link-125134263\\fix_debug_gdb_scripts.ld" "-Wl,--start-group" "-lmingwex" "-lmingw32" "-Wl,--end-group" "-lwinmm" "-lws2_32" "-lkernel32"
gcc.exe: error: C:\cygwin64\tmp\go-link-125134263\go.o: No such file or directory
gcc.exe: error: C:\cygwin64\tmp\go-link-125134263\000000.o: No such file or directory
gcc.exe: error: C:\cygwin64\tmp\go-link-125134263\000001.o: No such file or directory
gcc.exe: error: C:\cygwin64\tmp\go-link-125134263\000002.o: No such file or directory
gcc.exe: error: C:\cygwin64\tmp\go-link-125134263\000003.o: No such file or directory
gcc.exe: error: C:\cygwin64\tmp\go-link-125134263\000004.o: No such file or directory
gcc.exe: error: C:\cygwin64\tmp\go-link-125134263\000005.o: No such file or directory
gcc.exe: error: C:\cygwin64\tmp\go-link-125134263\000006.o: No such file or directory
gcc.exe: error: C:\cygwin64\tmp\go-link-125134263\000007.o: No such file or directory
gcc.exe: error: C:\cygwin64\tmp\go-link-125134263\000008.o: No such file or directory
gcc.exe: error: C:\cygwin64\tmp\go-link-125134263\000009.o: No such file or directory
gcc.exe: error: C:\cygwin64\tmp\go-link-125134263\000010.o: No such file or directory
Fri Nov 2 10:54:26 +07 2018
Looks like it's related to Cygwin
because running via bash
(WSL) works fine:
"C:\\Go\\pkg\\tool\\windows_amd64\\link.exe" -o "C:\\Users\\IEUser\\AppData\\Local\\Temp\\go-build132204662\\b001\\exe\\a.out.exe" -importcfg "C:\\Users\\IEUser\\AppData\\Local\\Temp\\go-build132204662\\b001\\importcfg.link" -buildmode=exe -buildid=_Pna6rQZInvPOTo6ovpT/eNgRkOxfyIfNEc923MEh/LM048ylaWCky7xp48PwR/_Pna6rQZInvPOTo6ovpT -X ... "-extld=C:\\Qt\\Qt5.11.1\\Tools\\mingw530_32\\bin\\gcc.exe" "C:\\Users\\IEUser\\AppData\\Local\\go-build\\07\\07d3feb4ac36b40e45669e164e0565963f209a2510b6f11f5237d6d554c024e3-d"
"C:\\Go\\pkg\\tool\\windows_amd64\\buildid.exe" -w "C:\\Users\\IEUser\\AppData\\Local\\Temp\\go-build132204662\\b001\\exe\\a.out.exe" # internal
mkdir -p C:\Users\IEUser\drone-workspace\
cp $WORK\b001\exe\a.out.exe C:\Users\IEUser\drone-workspace\xx.exe
The problem is: https://github.com/Microsoft/WSL/issues/2138 That's the reason why I have to try Cygwin.