Upgrading go to 1.8 resolved the issue. But I no longer see gccgo invocation.
root@xxxxxx-23:~# go version go version go1.8.1 linux/amd64 root@xxxxxx-23:~/temp-go/src# go build -x WORK=/tmp/go-build538089172 mkdir -p $WORK/_/root/temp-go/src/_obj/ mkdir -p $WORK/_/root/temp-go/src/_obj/exe/ cd /root/temp-go/src CGO_LDFLAGS="-g" "-O2" "-L/usr/local/lib" "-ltemp" /usr/lib/go-1.8/pkg/tool/linux_amd64/cgo -objdir $WORK/_/root/temp-go/src/_obj/ -importpath _/root/temp-go/src -- -I $WORK/_/root/temp-go/src/_obj/ -g -O2 -I/usr/local/include temp.go cd $WORK gcc -fdebug-prefix-map=a=b -c trivial.c gcc -gno-record-gcc-switches -c trivial.c cd /root/temp-go/src gcc -I . -fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -I $WORK/_/root/temp-go/src/_obj/ -g -O2 -I/usr/local/include -o $WORK/_/root/temp-go/src/_obj/_cgo_export.o -c $WORK/_/root/temp-go/src/_obj/_cgo_export.c gcc -I . -fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -I $WORK/_/root/temp-go/src/_obj/ -g -O2 -I/usr/local/include -o $WORK/_/root/temp-go/src/_obj/temp.cgo2.o -c $WORK/_/root/temp-go/src/_obj/temp.cgo2.c gcc -I . -fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -I $WORK/_/root/temp-go/src/_obj/ -g -O2 -I/usr/local/include -o $WORK/_/root/temp-go/src/_obj/_cgo_main.o -c $WORK/_/root/temp-go/src/_obj/_cgo_main.c gcc -I . -fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -o $WORK/_/root/temp-go/src/_obj/_cgo_.o $WORK/_/root/temp-go/src/_obj/_cgo_main.o $WORK/_/root/temp-go/src/_obj/_cgo_export.o $WORK/_/root/temp-go/src/_obj/temp.cgo2.o -g -O2 -L/usr/local/lib -ltemp /usr/lib/go-1.8/pkg/tool/linux_amd64/cgo -dynpackage main -dynimport $WORK/_/root/temp-go/src/_obj/_cgo_.o -dynout $WORK/_/root/temp-go/src/_obj/_cgo_import.go cd $WORK gcc -no-pie -c trivial.c cd /root/temp-go/src gcc -I . -fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -o $WORK/_/root/temp-go/src/_obj/_all.o $WORK/_/root/temp-go/src/_obj/_cgo_export.o $WORK/_/root/temp-go/src/_obj/temp.cgo2.o -g -O2 -L/usr/local/lib -Wl,-r -nostdlib -Wl,--build-id=none /usr/lib/go-1.8/pkg/tool/linux_amd64/compile -o $WORK/_/root/temp-go/src.a -trimpath $WORK -p main -buildid 3d229efca1b0f33762cb3fc61fd1f12965192508 -D _/root/temp-go/src -I $WORK -pack $WORK/_/root/temp-go/src/_obj/_cgo_gotypes.go $WORK/_/root/temp-go/src/_obj/temp.cgo1.go $WORK/_/root/temp-go/src/_obj/_cgo_import.go pack r $WORK/_/root/temp-go/src.a $WORK/_/root/temp-go/src/_obj/_all.o # internal cd . /usr/lib/go-1.8/pkg/tool/linux_amd64/link -o $WORK/_/root/temp-go/src/_obj/exe/a.out -L $WORK -extld=gcc -buildmode=exe -buildid=3d229efca1b0f33762cb3fc61fd1f12965192508 $WORK/_/root/temp-go/src.a mv $WORK/_/root/temp-go/src/_obj/exe/a.out src On Wed, Jul 19, 2017 at 11:12 AM, Bhaskar Singhal <bhaskar.sing...@gmail.com > wrote: > root@xxxxxx-23:~# uname -a > Linux xxxxxx-23 4.4.70-letstry #1 SMP Tue Jul 11 13:58:17 IST 2017 x86_64 > x86_64 x86_64 GNU/Linux > > root@xxxxxx-23:/usr/lib/go/src/pkg# go version > go version go1.2.1 linux/amd64 > > root@xxxxxx-23:~/temp-go/src# go build -x > WORK=/tmp/go-build751660824 > mkdir -p $WORK/_/root/temp-go/src/_obj/ > cd /root/temp-go/src > /usr/lib/gccgo/tool/cgo -objdir $WORK/_/root/temp-go/src/_obj/ -gccgo -- > -I $WORK/_/root/temp-go/src/_obj/ -I/usr/local/include temp.go > gcc -Wall -g -I $WORK/_/root/temp-go/src/_obj/ -I /usr/pkg/linux_amd64 -o > $WORK/_/root/temp-go/src/_obj/_cgo_defun.o -D GOOS_linux -D GOARCH_amd64 > -m64 -c $WORK/_/root/temp-go/src/_obj/_cgo_defun.c > gcc -I . -g -O2 -fPIC -m64 -pthread -print-libgcc-file-name > gcc -I . -g -O2 -fPIC -m64 -pthread -I $WORK/_/root/temp-go/src/_obj/ > -I/usr/local/include -o $WORK/_/root/temp-go/src/_obj/_cgo_main.o -c > $WORK/_/root/temp-go/src/_obj/_cgo_main.c > gcc -I . -g -O2 -fPIC -m64 -pthread -I $WORK/_/root/temp-go/src/_obj/ > -I/usr/local/include -o $WORK/_/root/temp-go/src/_obj/_cgo_export.o -c > $WORK/_/root/temp-go/src/_obj/_cgo_export.c > gcc -I . -g -O2 -fPIC -m64 -pthread -I $WORK/_/root/temp-go/src/_obj/ > -I/usr/local/include -o $WORK/_/root/temp-go/src/_obj/temp.cgo2.o -c > $WORK/_/root/temp-go/src/_obj/temp.cgo2.c > gcc -I . -g -O2 -fPIC -m64 -pthread -o $WORK/_/root/temp-go/src/_obj/_cgo_.o > $WORK/_/root/temp-go/src/_obj/_cgo_main.o > $WORK/_/root/temp-go/src/_obj/_cgo_export.o > $WORK/_/root/temp-go/src/_obj/temp.cgo2.o -L/usr/local/lib -ltemp > gccgo -I $WORK -c -g -m64 -fgo-relative-import-path=_/root/temp-go/src -o > $WORK/_/root/temp-go/src/_obj/main.o > $WORK/_/root/temp-go/src/_obj/_cgo_gotypes.go > $WORK/_/root/temp-go/src/_obj/temp.cgo1.go > ar cru $WORK/_/root/temp-go/libsrc.a $WORK/_/root/temp-go/src/_obj/main.o > $WORK/_/root/temp-go/src/_obj/_cgo_defun.o > $WORK/_/root/temp-go/src/_obj/_cgo_export.o > $WORK/_/root/temp-go/src/_obj/temp.cgo2.o > cd . > gccgo -o src $WORK/_/root/temp-go/src/_obj/main.o > $WORK/_/root/temp-go/src/_obj/_cgo_defun.o > $WORK/_/root/temp-go/src/_obj/_cgo_export.o > $WORK/_/root/temp-go/src/_obj/temp.cgo2.o -Wl,-( -m64 -Wl,-) > # _/root/temp-go/src > /root/temp-go/src/temp.go:40: error: undefined reference to 'temp_close' > /root/temp-go/src/temp.go:46: error: undefined reference to 'temp_open' > /root/temp-go/src/temp.go:52: error: undefined reference to 'temp_size' > collect2: error: ld returned 1 exit status > > > > root@xxxxxx-23:~/temp-go/src# go build -x -gccgoflags '-L/usr/local/lib > -ltemp' > WORK=/tmp/go-build002491189 > mkdir -p $WORK/_/root/temp-go/src/_obj/ > cd /root/temp-go/src > /usr/lib/gccgo/tool/cgo -objdir $WORK/_/root/temp-go/src/_obj/ -gccgo -- > -I $WORK/_/root/temp-go/src/_obj/ -I/usr/local/include temp.go > gcc -Wall -g -I $WORK/_/root/temp-go/src/_obj/ -I /usr/pkg/linux_amd64 -o > $WORK/_/root/temp-go/src/_obj/_cgo_defun.o -D GOOS_linux -D GOARCH_amd64 > -m64 -c $WORK/_/root/temp-go/src/_obj/_cgo_defun.c > gcc -I . -g -O2 -fPIC -m64 -pthread -print-libgcc-file-name > gcc -I . -g -O2 -fPIC -m64 -pthread -I $WORK/_/root/temp-go/src/_obj/ > -I/usr/local/include -o $WORK/_/root/temp-go/src/_obj/_cgo_main.o -c > $WORK/_/root/temp-go/src/_obj/_cgo_main.c > gcc -I . -g -O2 -fPIC -m64 -pthread -I $WORK/_/root/temp-go/src/_obj/ > -I/usr/local/include -o $WORK/_/root/temp-go/src/_obj/_cgo_export.o -c > $WORK/_/root/temp-go/src/_obj/_cgo_export.c > gcc -I . -g -O2 -fPIC -m64 -pthread -I $WORK/_/root/temp-go/src/_obj/ > -I/usr/local/include -o $WORK/_/root/temp-go/src/_obj/temp.cgo2.o -c > $WORK/_/root/temp-go/src/_obj/temp.cgo2.c > gcc -I . -g -O2 -fPIC -m64 -pthread -o $WORK/_/root/temp-go/src/_obj/_cgo_.o > $WORK/_/root/temp-go/src/_obj/_cgo_main.o > $WORK/_/root/temp-go/src/_obj/_cgo_export.o > $WORK/_/root/temp-go/src/_obj/temp.cgo2.o -L/usr/local/lib -ltemp > gccgo -I $WORK -c -g -m64 -fgo-relative-import-path=_/root/temp-go/src -o > $WORK/_/root/temp-go/src/_obj/main.o -L/usr/local/lib -ltemp > $WORK/_/root/temp-go/src/_obj/_cgo_gotypes.go > $WORK/_/root/temp-go/src/_obj/temp.cgo1.go > ar cru $WORK/_/root/temp-go/libsrc.a $WORK/_/root/temp-go/src/_obj/main.o > $WORK/_/root/temp-go/src/_obj/_cgo_defun.o > $WORK/_/root/temp-go/src/_obj/_cgo_export.o > $WORK/_/root/temp-go/src/_obj/temp.cgo2.o > cd . > gccgo -o src $WORK/_/root/temp-go/src/_obj/main.o > $WORK/_/root/temp-go/src/_obj/_cgo_defun.o > $WORK/_/root/temp-go/src/_obj/_cgo_export.o > $WORK/_/root/temp-go/src/_obj/temp.cgo2.o -Wl,-( -m64 -Wl,-) > -L/usr/local/lib -ltemp > > > > > On Wed, Jul 19, 2017 at 10:28 AM, Ian Lance Taylor <i...@golang.org> > wrote: > >> On Tue, Jul 18, 2017 at 9:40 PM, <bhaskar.sing...@gmail.com> wrote: >> > >> > I am trying to link a dynamic library to my go code. >> > >> > /* >> > #cgo CFLAGS: -I/usr/local/include >> > #cgo LDFLAGS: -L/usr/local/lib -ltemp >> > #include <stdio.h> >> > #include <stdlib.h> >> > #include <libtemp.h> >> > */ >> > >> > When I run go build -x it fails due to missing symbols which are >> exported >> > from libtemp.so but if do >> > go build -x -gccgoflags '-L/usr/local/lib -ltemp' then it works fine. >> > >> > I am wondering if there is a way to specify -gccgoflags using pseudo >> #cgo >> > directive. >> >> The ordinary #cgo LDFLAGS should work with gccgo as it does with the >> gc toolchain. >> >> Can you show us the output of `go build -x`? Also tell us which >> version of the toolchains you are using. >> >> Ian >> > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.