Hello,
I cross compiled he gcc5.1.0 for sparc solaris 10 on my Fedora 20 X86_64 and getting undefined reference errors when static linking against libgo. However, the dynamic linking works fine with no errors:
[client]$ /opt/cross/bin/sparc-sun-solaris2.10-gccgo -v -static-libgo -o hello hello.go
Using built-in specs.
COLLECT_GCC=/opt/cross/bin/sparc-sun-solaris2.10-gccgo
COLLECT_LTO_WRAPPER=/opt/cross/libexec/gcc/sparc-sun-solaris2.10/5.1.0/lto-wrapper
Target: sparc-sun-solaris2.10
Configured with: ../gcc_cross-5.1.0/configure --target=sparc-sun-solaris2.10 --with-gnu-as --with-gnu-ld --prefix=/opt/cross/ -with-sysroot=/opt/cross/sysroot/ --disable-libgcj --enable-languages=c,c++,go -v
Thread model: posix
gcc version 5.1.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '-o' 'hello' '-shared-libgcc' '-mcpu=v9'
/opt/cross/libexec/gcc/sparc-sun-solaris2.10/5.1.0/go1 hello.go -quiet -dumpbase hello.go -mcpu=v9 -auxbase hello -version -L/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0 -L/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib -L/opt/cross/sysroot/lib -L/opt/cross/sysroot/usr/lib -o /tmp/ccx9FhjV.s
GNU Go (GCC) version 5.1.0 (sparc-sun-solaris2.10)
compiled by GNU C version 4.8.3 20140911 (Red Hat 4.8.3-7), GMP version 5.1.2, MPFR version 3.1.2, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU Go (GCC) version 5.1.0 (sparc-sun-solaris2.10)
compiled by GNU C version 4.8.3 20140911 (Red Hat 4.8.3-7), GMP version 5.1.2, MPFR version 3.1.2, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
COLLECT_GCC_OPTIONS='-v' '-o' 'hello' '-shared-libgcc' '-mcpu=v9'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/bin/as -v -V -Qy -s -xarch=v8plus -32 -o /tmp/ccB6dkeC.o /tmp/ccx9FhjV.s
GNU assembler version 2.25 (sparc-sun-solaris2.10) using BFD version (GNU Binutils) 2.25
COMPILER_PATH=/opt/cross/libexec/gcc/sparc-sun-solaris2.10/5.1.0/:/opt/cross/libexec/gcc/sparc-sun-solaris2.10/5.1.0/:/opt/cross/libexec/gcc/sparc-sun-solaris2.10/:/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/:/opt/cross/lib/gcc/sparc-sun-solaris2.10/:/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/bin/
LIBRARY_PATH=/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/:/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/:/opt/cross/sysroot/lib/:/opt/cross/sysroot/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' 'hello' '-shared-libgcc' '-mcpu=v9'
/opt/cross/libexec/gcc/sparc-sun-solaris2.10/5.1.0/collect2 -plugin /opt/cross/libexec/gcc/sparc-sun-solaris2.10/5.1.0/liblto_plugin.so -plugin-opt=/opt/cross/libexec/gcc/sparc-sun-solaris2.10/5.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccna369i.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc --sysroot=/opt/cross/sysroot/ -V -m elf32_sparc_sol2 -Y P,/opt/cross/sysroot//lib:/opt/cross/sysroot//usr/lib -Qy -o hello /opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/crt1.o /opt/cross/sysroot/usr/lib/crti.o /opt/cross/sysroot/usr/lib/values-Xa.o /opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/crtbegin.o -L/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0 -L/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib -L/opt/cross/sysroot/lib -L/opt/cross/sysroot/usr/lib /tmp/ccB6dkeC.o -lgobegin -Bstatic -lgo -Bdynamic -lpthread -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -lc /opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/crtend.o /opt/cross/sysroot/usr/lib/crtn.o
GNU ld (GNU Binutils) 2.25
Supported emulations:
elf32_sparc_sol2
elf32_sparc
elf64_sparc_sol2
elf64_sparc
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.bind':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:2139: undefined reference to `__xnet_bind'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.connect':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:2158: undefined reference to `__xnet_connect'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.socketpair':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:2194: undefined reference to `__xnet_socketpair'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.getsockopt':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:2212: undefined reference to `__xnet_getsockopt'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.setsockopt':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:1571: undefined reference to `setsockopt'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.sendto':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:2237: undefined reference to `__xnet_sendto'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.Nanosleep':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:794: undefined reference to `nanosleep'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.Setdomainname':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:966: undefined reference to `setdomainname'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.Listen':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:1616: undefined reference to `listen'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.Shutdown':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:1635: undefined reference to `shutdown'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.socket':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:2176: undefined reference to `__xnet_socket'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.sendmsg':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:2276: undefined reference to `__xnet_sendmsg'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.recvmsg':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:2256: undefined reference to `__xnet_recvmsg'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.recvfrom':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:1596: undefined reference to `recvfrom'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.getpeername':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:1553: undefined reference to `getpeername'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.getsockname':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:1536: undefined reference to `getsockname'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(syscall.o): In function `syscall.accept':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/libcalls.go:1517: undefined reference to `accept'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(thread-sema.o): In function `runtime_semacreate':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/../../../gcc_cross-5.1.0/libgo/runtime/thread-sema.c:40: undefined reference to `sem_init'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(thread-sema.o): In function `runtime_semasleep':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/../../../gcc_cross-5.1.0/libgo/runtime/thread-sema.c:77: undefined reference to `sem_timedwait'
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/../../../gcc_cross-5.1.0/libgo/runtime/thread-sema.c:107: undefined reference to `sem_wait'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(thread-sema.o): In function `runtime_semawakeup':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/../../../gcc_cross-5.1.0/libgo/runtime/thread-sema.c:125: undefined reference to `sem_post'
/opt/cross/lib/gcc/sparc-sun-solaris2.10/5.1.0/../../../../sparc-sun-solaris2.10/lib/libgo.a(yield.o): In function `runtime_osyield':
/disk_720g/scratch/software/linux/gcc/build-gcc/sparc-sun-solaris2.10/libgo/../../../gcc_cross-5.1.0/libgo/runtime/yield.c:43: undefined reference to `sched_yield'
collect2: error: ld returned 1 exit status
The program is a simple hello world program.
[client]$ cat hello.go
package main
import "fmt"
func main() {
fmt.Println("Hello world!")
}
Regards,
Gagan