compilation - Compiling a Go program with C Libraries into a Standalone executable -


i'm trying compile go program standalone including c libraries. command i'm using

[mm17@mm17 grogger]$ go build --ldflags '-extldflags "-static"' ./grogger.go # command-line-arguments /usr/bin/ld: cannot find -lgrok collect2: ld returned 1 exit status /home/mm17/go/pkg/tool/linux_amd64/6l: running gcc failed: unsuccessful exit status 0x100 

so i'll modify file calls grok library have following header

  1 package grok   2   3 /*   4 #cgo ldflags: -l /usr/lib/libgrok.so -lgrok   5 #include <grok.h>   6 */   7 import "c" 

and running same command gives

[mm17@mm17 grogger]$ go build --ldflags '-extldflags "-static"' ./grogger.go # github.com/blakesmith/go-grok /usr/bin/ld: warning: cannot find entry symbol _start; defaulting 0000000000400180 /tmp/go-build731085030/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_strlen': ../../blakesmith/go-grok/grok.go:169: undefined reference `strlen' /tmp/go-build731085030/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_grok_patterns_import_from_file': ../../blakesmith/go-grok/grok.go:159: undefined reference `grok_patterns_import_from_file' /tmp/go-build731085030/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_grok_pattern_add': ../../blakesmith/go-grok/grok.go:147: undefined reference `grok_pattern_add' /tmp/go-build731085030/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_grok_new': ../../blakesmith/go-grok/grok.go:132: undefined reference `grok_new' /tmp/go-build731085030/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_grok_match_walk_next': ../../blakesmith/go-grok/grok.go:123: undefined reference `grok_match_walk_next' /tmp/go-build731085030/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_grok_exec': ../../blakesmith/go-grok/grok.go:81: undefined reference `grok_exec' /tmp/go-build731085030/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_grok_discover_new': ../../blakesmith/go-grok/grok.go:68: undefined reference `grok_discover_new' /tmp/go-build731085030/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_grok_compile': ../../blakesmith/go-grok/grok.go:46: undefined reference `grok_compile' /tmp/go-build731085030/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_grok_match_walk_init': ../../blakesmith/go-grok/grok.go:108: undefined reference `grok_match_walk_init' /tmp/go-build731085030/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_grok_match_walk_end': ../../blakesmith/go-grok/grok.go:99: undefined reference `grok_match_walk_end' /tmp/go-build731085030/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_grok_free': ../../blakesmith/go-grok/grok.go:90: undefined reference `grok_free' /tmp/go-build731085030/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_grok_discover': ../../blakesmith/go-grok/grok.go:58: undefined reference `grok_discover' /tmp/go-build731085030/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_free': ../../blakesmith/go-grok/grok.go:34: undefined reference `free' collect2: ld returned 1 exit status 

if try build same things:

[mm17@mm17 grogger]$ go build grogger.go # github.com/blakesmith/go-grok /usr/bin/ld: warning: cannot find entry symbol _start; defaulting 0000000000400180 /tmp/go-build294631148/github.com/blakesmith/go-grok/_obj/grok.cgo2.o: in function `_cgo_4244208c3352_cfunc_strlen': ../../blakesmith/go-grok/grok.go:169: undefined reference `strlen' .... 

i'm sure i'm doing stupid, can't seem figure out, i'm pretty novice when comes gcc , go, first non toy program.

when compile native library gcc make sure use -fpic option.

if library compiled without -fpic go not able locate functions in it.


Comments

Popular posts from this blog

php - Submit Form Data without Reloading page -

linux - Rails running on virtual machine in Windows -

php - $params->set Array between square bracket -