On Thu, Sep 27, 2018 at 5:34 PM, <amand...@cohesity.com> wrote: > Yes, this works for a simple program I have. Now I modified the helloworld > to use glog as follows: > > package main > > import ( > "fmt" > "github.com/golang/glog" > ) > > func main() { > fmt.Println("Hello world....") > glog.Info("Hello world...") > } > > But now I get another error from libglog.a: > > amandeep@s113ldom1:~/workspace$ go build -gccgoflags=-m64 helloworld.go > # command-line-arguments > ld: warning: file > /opt/go_pkgs/pkg/gccgo_solaris_sparc/github.com/golang/libglog.a(_go_.o): > wrong ELF class: ELFCLASS32 > Undefined first referenced > symbol in file > github_com_golang_glog..import $WORK/b001/_pkg_.a(_go_.o) > github_com_golang_glog.Info $WORK/b001/_pkg_.a(_go_.o) > ld: fatal: symbol referencing errors > collect2: error: ld returned 1 exit status > > So, I thought recompiling glog with 64 bit option would help. None of the > following helped: > > sudo GOPATH=/opt/go_pkgs/ CGO_LDFLAGS='-m64' go install > sudo GOPATH=/opt/go_pkgs/ go install -gccgoflags '-m64' > sudo GOPATH=/opt/go_pkgs/ go install -gccgoflags='-m64' > > All of these generate the following: > > amandeep@s113ldom1:/opt/go_pkgs/src/github.com/golang/glog$ file > /opt/go_pkgs/pkg/gccgo_solaris_sparc/github.com/golang/libglog.a > /opt/go_pkgs/pkg/gccgo_solaris_sparc/github.com/golang/libglog.a: > current ar archive, 32-bit symbol table
For a package that uses cgo, you'll need to use -gccgoflags=-m64 and also set both CGO_CFLAGS and CGO_LDFLAGS to -m64. Ian > On Thursday, September 27, 2018 at 3:01:12 PM UTC-7, Ian Lance Taylor wrote: >> >> On Thu, Sep 27, 2018 at 2:57 PM, Amandeep Gautam >> <amandee...@gmail.com> wrote: >> > Hi, >> > I am trying to compile a 64bit executable using gccgo on Solaris >> > 11/10. >> > Following is what I have tried: >> > >> > CGO_LDFLAGS='-m64' go build hello_world.go >> > GOARCH=sparc64 CGO_LDFLAGS='-m64' go build hello_world.go >> > >> > Below is the output of the first command: >> > >> > amandeep@s113ldom1:~/workspace$ CGO_LDFLAGS='-m64' go build pqrs.go >> > # command-line-arguments >> > ld: warning: file $WORK/b001/_pkg_.a(_go_.o): wrong ELF class: >> > ELFCLASS32 >> > Undefined first referenced >> > symbol in file >> > main.main >> > /usr/gnu/lib/gcc/sparc-sun-solaris2.11/8.2.1/../../../sparcv9/libgo.so >> > __go_init_main >> > /usr/gnu/lib/gcc/sparc-sun-solaris2.11/8.2.1/../../../sparcv9/libgo.so >> > ld: fatal: symbol referencing errors >> > collect2: error: ld returned 1 exit status >> > >> > However, I am able to generate 64 bit executable for c++ helloworld >> > using >> > just gcc, so I am hoping it boils down to passing the right set of >> > flags. >> > For example: >> > >> > amandeep@s113ldom1:~/workspace$ /usr/gnu/bin/gcc -m64 helloworld.c >> > amandeep@s113ldom1:~/workspace$ file ./a.out >> > ./a.out: ELF 64-bit MSB executable SPARCV9 Version 1, dynamically >> > linked, not stripped, no debugging information available >> > amandeep@s113ldom1:~/workspace$ file /usr/gnu/bin/gcc >> > /usr/gnu/bin/gcc: ELF 32-bit MSB executable SPARC32PLUS Version 1, >> > V8+ >> > Required, dynamically linked, not stripped >> > >> > How would you compile a 64 bit executable for Solaris using gccgo? >> >> CGO_LDFLAGS only affects your program if it actually uses cgo. >> >> Does it work to do >> go build -gccgoflags=-m64 >> ? > > > -- > 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. -- 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.