go-sqlite3 icon indicating copy to clipboard operation
go-sqlite3 copied to clipboard

win32 go build fail.

Open Peakchen opened this issue 5 years ago • 11 comments

windows_386\link.exe: running gcc failed: exit status 1 go-link-162727447\000000.o: file not recognized: File format not recognized collect2.exe: error: ld returned 1 exit status

how to resolve this problem and cgo?

Peakchen avatar Jan 02 '20 07:01 Peakchen

Are you doing cross-compilation?

mattn avatar Jan 02 '20 11:01 mattn

Are you doing cross-compilation?

first,i do cross-compilation at win64,but it fail,then i try at win32,Suddenly this problem occurs. please help me resolve that, I have been pinning this issue for several days.

Peakchen avatar Jan 03 '20 09:01 Peakchen

Are you doing cross-compilation?

first,i do cross-compilation at win64,but it fail,then i try at win32,Suddenly this problem occurs. please help me resolve that, I have been pinning this issue for several days.

env: mingw or tdm 5.1, go version go1.12.7 windows/386.

Peakchen avatar Jan 03 '20 09:01 Peakchen

You need to use 32bit C compiler.

mattn avatar Jan 03 '20 15:01 mattn

You need to use 32bit C compiler.

the third reply what has used 32bit compiler about mingw or tdm

Peakchen avatar Jan 04 '20 01:01 Peakchen

Could you please paste result of go build -x ?

mattn avatar Jan 09 '20 09:01 mattn

now,i only compile success by single go file,what is main. go. others is can not.

Peakchen avatar Jan 10 '20 01:01 Peakchen

@Peakchen Can you please post the exact go build command you are running, as well as the output of running go env and where gcc?

rittneje avatar Jan 10 '20 02:01 rittneje

the same problem go env

set GO111MODULE=
set GOARCH=386
set GOBIN=
set GOCACHE=C:\Users\Administrator\AppData\Local\go-build
set GOENV=C:\Users\Administrator\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=386
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\Administrator\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\Administrator\go
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=C:\Program Files (x86)\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Program Files (x86)\Go\pkg\tool\windows_386
set GOVCS=
set GOVERSION=go1.17.6
set GCCGO=gccgo
set GO386=sse2
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=C:\go_ic\go.mod
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=-m32 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\ADMINI~1\AppData\Local\Temp\go-build3864796519=/tmp/go-build -gno-record-gcc-switches

where gcc

C:\TDM-GCC-32\bin\gcc.exe

gcc versions

COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/tdm-gcc-32/bin/../libexec/gcc/mingw32/9.2.0/lto-wrapper.exe
Target: mingw32
Configured with: ../src/gcc-9.2.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-static --enable-shared --enable-threads --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --enable-libgomp --disable-libvtv --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --disable-build-format-warnings --prefix=/mingw --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --with-isl=/mingw --enable-nls --with-pkgversion='MinGW.org GCC Build-2'
Thread model: win32
gcc version 9.2.0 (MinGW.org GCC Build-2)

ysllyfe avatar Feb 11 '22 15:02 ysllyfe

@ysllyfe Can you share the specific go build command you are running, and the output you are seeing?

Does the issue persist with go build -a? Can you also try with go build -x and share the output from that?

rittneje avatar Feb 11 '22 17:02 rittneje

@rittneje

go build output

C:\Program Files (x86)\Go\pkg\tool\windows_386\link.exe: running gcc failed: exit status 1
C:\Users\ys\AppData\Local\Temp\go-link-2705782361\000000.o: file not recognized: file format not recognized
collect2.exe: error: ld returned 1 exit status

go build -a same as go build

PS C:\Users\ys\go_ic> go build -a
# go_ic
C:\Program Files (x86)\Go\pkg\tool\windows_386\link.exe: running gcc failed: exit status 1
C:\Users\ys\AppData\Local\Temp\go-link-3686115457\000000.o: file not recognized: file format not recognized
collect2.exe: error: ld returned 1 exit status

go build -x

PS C:\Users\ys\go_ic> go build -x
WORK=C:\Users\ys\AppData\Local\Temp\go-build3731535320
mkdir -p $WORK\b001\
cat >$WORK\b001\importcfg.link << 'EOF' # internal
packagefile go_ic=C:\Users\ys\AppData\Local\go-build\9f\9f1285d01c43fc694f6462eb336f038a9eb4e3e60f8347bb3a8c95892452113f-d
packagefile bytes=C:\Program Files (x86)\Go\pkg\windows_386\bytes.a
packagefile database/sql=C:\Program Files (x86)\Go\pkg\windows_386\database\sql.a
packagefile encoding/binary=C:\Program Files (x86)\Go\pkg\windows_386\encoding\binary.a
packagefile encoding/hex=C:\Program Files (x86)\Go\pkg\windows_386\encoding\hex.a
packagefile errors=C:\Program Files (x86)\Go\pkg\windows_386\errors.a
packagefile flag=C:\Program Files (x86)\Go\pkg\windows_386\flag.a
packagefile fmt=C:\Program Files (x86)\Go\pkg\windows_386\fmt.a
packagefile github.com/go-ini/ini=C:\Users\ys\AppData\Local\go-build\f8\f89e0e556fef722cd7c61f2e4a73ebe7705401f9855b04315dc78d792d247066-d
packagefile github.com/gorilla/websocket=C:\Users\ys\AppData\Local\go-build\a2\a29ed76492d2ab5632711e5dac1386ccfce686ca2e457fa472f6612ef8699b66-d
packagefile github.com/lxn/walk=C:\Users\ys\AppData\Local\go-build\32\32b9cc96db68db53e35a02fb840a65555ae034b29029831dc5aa13fff18f2537-d
packagefile github.com/lxn/walk/declarative=C:\Users\ys\AppData\Local\go-build\38\3846aba0d7ec02abe7b3191ced074c59f43575ea6982cb6c5edd9b0702c5c354-d
packagefile github.com/mattn/go-sqlite3=C:\Users\ys\AppData\Local\go-build\af\af9f5f3c8fbb0fbdf511b1c2e72191d8cd17a1d5c9ff494a47f61fa7840689d1-d
packagefile log=C:\Program Files (x86)\Go\pkg\windows_386\log.a
packagefile net=C:\Program Files (x86)\Go\pkg\windows_386\net.a
packagefile net/http=C:\Program Files (x86)\Go\pkg\windows_386\net\http.a
packagefile reflect=C:\Program Files (x86)\Go\pkg\windows_386\reflect.a
packagefile strconv=C:\Program Files (x86)\Go\pkg\windows_386\strconv.a
packagefile strings=C:\Program Files (x86)\Go\pkg\windows_386\strings.a
packagefile syscall=C:\Program Files (x86)\Go\pkg\windows_386\syscall.a
packagefile time=C:\Program Files (x86)\Go\pkg\windows_386\time.a
packagefile runtime=C:\Program Files (x86)\Go\pkg\windows_386\runtime.a
packagefile internal/bytealg=C:\Program Files (x86)\Go\pkg\windows_386\internal\bytealg.a
packagefile io=C:\Program Files (x86)\Go\pkg\windows_386\io.a
packagefile unicode=C:\Program Files (x86)\Go\pkg\windows_386\unicode.a
packagefile unicode/utf8=C:\Program Files (x86)\Go\pkg\windows_386\unicode\utf8.a
packagefile context=C:\Program Files (x86)\Go\pkg\windows_386\context.a
packagefile database/sql/driver=C:\Program Files (x86)\Go\pkg\windows_386\database\sql\driver.a
packagefile sort=C:\Program Files (x86)\Go\pkg\windows_386\sort.a
packagefile sync=C:\Program Files (x86)\Go\pkg\windows_386\sync.a
packagefile sync/atomic=C:\Program Files (x86)\Go\pkg\windows_386\sync\atomic.a
packagefile math=C:\Program Files (x86)\Go\pkg\windows_386\math.a
packagefile internal/reflectlite=C:\Program Files (x86)\Go\pkg\windows_386\internal\reflectlite.a
packagefile os=C:\Program Files (x86)\Go\pkg\windows_386\os.a
packagefile internal/fmtsort=C:\Program Files (x86)\Go\pkg\windows_386\internal\fmtsort.a
packagefile bufio=C:\Program Files (x86)\Go\pkg\windows_386\bufio.a
packagefile io/ioutil=C:\Program Files (x86)\Go\pkg\windows_386\io\ioutil.a
packagefile regexp=C:\Program Files (x86)\Go\pkg\windows_386\regexp.a
packagefile compress/flate=C:\Program Files (x86)\Go\pkg\windows_386\compress\flate.a
packagefile crypto/rand=C:\Program Files (x86)\Go\pkg\windows_386\crypto\rand.a
packagefile crypto/sha1=C:\Program Files (x86)\Go\pkg\windows_386\crypto\sha1.a
packagefile crypto/tls=C:\Program Files (x86)\Go\pkg\windows_386\crypto\tls.a
packagefile encoding/base64=C:\Program Files (x86)\Go\pkg\windows_386\encoding\base64.a
packagefile encoding/json=C:\Program Files (x86)\Go\pkg\windows_386\encoding\json.a
packagefile math/rand=C:\Program Files (x86)\Go\pkg\windows_386\math\rand.a
packagefile net/http/httptrace=C:\Program Files (x86)\Go\pkg\windows_386\net\http\httptrace.a
packagefile net/url=C:\Program Files (x86)\Go\pkg\windows_386\net\url.a
packagefile github.com/lxn/win=C:\Users\ys\AppData\Local\go-build\43\438fc883001a8b18442086ba41877e49c9294a8b0bb508958eefe52e1ff23c7c-d
packagefile golang.org/x/sys/windows=C:\Users\ys\AppData\Local\go-build\5d\5dd5fd3758e20be00570b11a2b40271b5d5c7dcfa20a640261d18f32034d8a32-d
packagefile gopkg.in/Knetic/govaluate.v3=C:\Users\ys\AppData\Local\go-build\8d\8d26cbfc1b2b1c66ce1e09a35312ee9c6b7bbbac48ea33ea3df97fe3cc63abf0-d
packagefile image=C:\Program Files (x86)\Go\pkg\windows_386\image.a
packagefile image/color=C:\Program Files (x86)\Go\pkg\windows_386\image\color.a
packagefile math/big=C:\Program Files (x86)\Go\pkg\windows_386\math\big.a
packagefile path/filepath=C:\Program Files (x86)\Go\pkg\windows_386\path\filepath.a
packagefile runtime/debug=C:\Program Files (x86)\Go\pkg\windows_386\runtime\debug.a
packagefile text/tabwriter=C:\Program Files (x86)\Go\pkg\windows_386\text\tabwriter.a
packagefile crypto/sha256=C:\Program Files (x86)\Go\pkg\windows_386\crypto\sha256.a
packagefile crypto/sha512=C:\Program Files (x86)\Go\pkg\windows_386\crypto\sha512.a
packagefile runtime/cgo=C:\Program Files (x86)\Go\pkg\windows_386\runtime\cgo.a
packagefile vendor/golang.org/x/net/dns/dnsmessage=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\net\dns\dnsmessage.a
packagefile internal/itoa=C:\Program Files (x86)\Go\pkg\windows_386\internal\itoa.a
packagefile internal/nettrace=C:\Program Files (x86)\Go\pkg\windows_386\internal\nettrace.a
packagefile internal/poll=C:\Program Files (x86)\Go\pkg\windows_386\internal\poll.a
packagefile internal/singleflight=C:\Program Files (x86)\Go\pkg\windows_386\internal\singleflight.a
packagefile internal/syscall/windows=C:\Program Files (x86)\Go\pkg\windows_386\internal\syscall\windows.a
packagefile compress/gzip=C:\Program Files (x86)\Go\pkg\windows_386\compress\gzip.a
packagefile container/list=C:\Program Files (x86)\Go\pkg\windows_386\container\list.a
packagefile vendor/golang.org/x/net/http/httpguts=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\net\http\httpguts.a
packagefile vendor/golang.org/x/net/http/httpproxy=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\net\http\httpproxy.a
packagefile vendor/golang.org/x/net/http2/hpack=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\net\http2\hpack.a
packagefile vendor/golang.org/x/net/idna=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\net\idna.a
packagefile io/fs=C:\Program Files (x86)\Go\pkg\windows_386\io\fs.a
packagefile mime=C:\Program Files (x86)\Go\pkg\windows_386\mime.a
packagefile mime/multipart=C:\Program Files (x86)\Go\pkg\windows_386\mime\multipart.a
packagefile net/http/internal=C:\Program Files (x86)\Go\pkg\windows_386\net\http\internal.a
packagefile net/http/internal/ascii=C:\Program Files (x86)\Go\pkg\windows_386\net\http\internal\ascii.a
packagefile net/textproto=C:\Program Files (x86)\Go\pkg\windows_386\net\textproto.a
packagefile path=C:\Program Files (x86)\Go\pkg\windows_386\path.a
packagefile internal/abi=C:\Program Files (x86)\Go\pkg\windows_386\internal\abi.a
packagefile internal/goexperiment=C:\Program Files (x86)\Go\pkg\windows_386\internal\goexperiment.a
packagefile internal/unsafeheader=C:\Program Files (x86)\Go\pkg\windows_386\internal\unsafeheader.a
packagefile math/bits=C:\Program Files (x86)\Go\pkg\windows_386\math\bits.a
packagefile internal/oserror=C:\Program Files (x86)\Go\pkg\windows_386\internal\oserror.a
packagefile internal/race=C:\Program Files (x86)\Go\pkg\windows_386\internal\race.a
packagefile internal/syscall/windows/sysdll=C:\Program Files (x86)\Go\pkg\windows_386\internal\syscall\windows\sysdll.a
packagefile unicode/utf16=C:\Program Files (x86)\Go\pkg\windows_386\unicode\utf16.a
packagefile internal/syscall/windows/registry=C:\Program Files (x86)\Go\pkg\windows_386\internal\syscall\windows\registry.a
packagefile internal/cpu=C:\Program Files (x86)\Go\pkg\windows_386\internal\cpu.a
packagefile runtime/internal/atomic=C:\Program Files (x86)\Go\pkg\windows_386\runtime\internal\atomic.a
packagefile runtime/internal/math=C:\Program Files (x86)\Go\pkg\windows_386\runtime\internal\math.a
packagefile runtime/internal/sys=C:\Program Files (x86)\Go\pkg\windows_386\runtime\internal\sys.a
packagefile internal/syscall/execenv=C:\Program Files (x86)\Go\pkg\windows_386\internal\syscall\execenv.a
packagefile internal/testlog=C:\Program Files (x86)\Go\pkg\windows_386\internal\testlog.a
packagefile regexp/syntax=C:\Program Files (x86)\Go\pkg\windows_386\regexp\syntax.a
packagefile crypto=C:\Program Files (x86)\Go\pkg\windows_386\crypto.a
packagefile hash=C:\Program Files (x86)\Go\pkg\windows_386\hash.a
packagefile crypto/aes=C:\Program Files (x86)\Go\pkg\windows_386\crypto\aes.a
packagefile crypto/cipher=C:\Program Files (x86)\Go\pkg\windows_386\crypto\cipher.a
packagefile crypto/des=C:\Program Files (x86)\Go\pkg\windows_386\crypto\des.a
packagefile crypto/ecdsa=C:\Program Files (x86)\Go\pkg\windows_386\crypto\ecdsa.a
packagefile crypto/ed25519=C:\Program Files (x86)\Go\pkg\windows_386\crypto\ed25519.a
packagefile crypto/elliptic=C:\Program Files (x86)\Go\pkg\windows_386\crypto\elliptic.a
packagefile crypto/hmac=C:\Program Files (x86)\Go\pkg\windows_386\crypto\hmac.a
packagefile crypto/md5=C:\Program Files (x86)\Go\pkg\windows_386\crypto\md5.a
packagefile crypto/rc4=C:\Program Files (x86)\Go\pkg\windows_386\crypto\rc4.a
packagefile crypto/rsa=C:\Program Files (x86)\Go\pkg\windows_386\crypto\rsa.a
packagefile crypto/subtle=C:\Program Files (x86)\Go\pkg\windows_386\crypto\subtle.a
packagefile crypto/x509=C:\Program Files (x86)\Go\pkg\windows_386\crypto\x509.a
packagefile encoding/pem=C:\Program Files (x86)\Go\pkg\windows_386\encoding\pem.a
packagefile vendor/golang.org/x/crypto/chacha20poly1305=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\crypto\chacha20poly1305.a
packagefile vendor/golang.org/x/crypto/cryptobyte=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\crypto\cryptobyte.a
packagefile vendor/golang.org/x/crypto/curve25519=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\crypto\curve25519.a
packagefile vendor/golang.org/x/crypto/hkdf=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\crypto\hkdf.a
packagefile encoding=C:\Program Files (x86)\Go\pkg\windows_386\encoding.a
packagefile golang.org/x/sys/internal/unsafeheader=C:\Users\ys\AppData\Local\go-build\9d\9d32a82b86e377527cee52029ae872529c97d26dd3e3942fa12f52bdc57b73da-d
packagefile hash/crc32=C:\Program Files (x86)\Go\pkg\windows_386\hash\crc32.a
packagefile vendor/golang.org/x/text/secure/bidirule=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\text\secure\bidirule.a
packagefile vendor/golang.org/x/text/unicode/bidi=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\text\unicode\bidi.a
packagefile vendor/golang.org/x/text/unicode/norm=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\text\unicode\norm.a
packagefile mime/quotedprintable=C:\Program Files (x86)\Go\pkg\windows_386\mime\quotedprintable.a
packagefile crypto/internal/subtle=C:\Program Files (x86)\Go\pkg\windows_386\crypto\internal\subtle.a
packagefile crypto/internal/randutil=C:\Program Files (x86)\Go\pkg\windows_386\crypto\internal\randutil.a
packagefile vendor/golang.org/x/crypto/cryptobyte/asn1=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\crypto\cryptobyte\asn1.a
packagefile crypto/ed25519/internal/edwards25519=C:\Program Files (x86)\Go\pkg\windows_386\crypto\ed25519\internal\edwards25519.a
packagefile crypto/elliptic/internal/fiat=C:\Program Files (x86)\Go\pkg\windows_386\crypto\elliptic\internal\fiat.a
packagefile crypto/dsa=C:\Program Files (x86)\Go\pkg\windows_386\crypto\dsa.a
packagefile crypto/x509/pkix=C:\Program Files (x86)\Go\pkg\windows_386\crypto\x509\pkix.a
packagefile encoding/asn1=C:\Program Files (x86)\Go\pkg\windows_386\encoding\asn1.a
packagefile vendor/golang.org/x/crypto/chacha20=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\crypto\chacha20.a
packagefile vendor/golang.org/x/crypto/internal/subtle=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\crypto\internal\subtle.a
packagefile vendor/golang.org/x/crypto/poly1305=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\crypto\poly1305.a
packagefile vendor/golang.org/x/text/transform=C:\Program Files (x86)\Go\pkg\windows_386\vendor\golang.org\x\text\transform.a
packagefile crypto/ed25519/internal/edwards25519/field=C:\Program Files (x86)\Go\pkg\windows_386\crypto\ed25519\internal\edwards25519\field.a
EOF
mkdir -p $WORK\b001\exe\
cd .
"C:\\Program Files (x86)\\Go\\pkg\\tool\\windows_386\\link.exe" -o "$WORK\\b001\\exe\\a.out.exe" -importcfg "$WORK\\b001\\importcfg.link" -buildmode=pie -buildid=fynVib2T1CSf10SGLEOv/-CX-IE9qYqzlnXXxwu1e/VYaOzQMba73uLDCRCaHh/fynVib2T1CSf10SGLEOv -extld=gcc "C:\\Users\\ys\\AppData\\Local\\go-build\\9f\\9f1285d01c43fc694f6462eb336f038a9eb4e3e60f8347bb3a8c95892452113f-d"
# go_ic
C:\Program Files (x86)\Go\pkg\tool\windows_386\link.exe: running gcc failed: exit status 1
C:\Users\ys\AppData\Local\Temp\go-link-211100704\000000.o: file not recognized: file format not recognized
collect2.exe: error: ld returned 1 exit status

ysllyfe avatar Feb 12 '22 10:02 ysllyfe