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.

Reply via email to