ah okay, I had problems with the ".a" suffix myself, so I though it was worth a shot.
I just know that this >//#cgo LDFLAGS: $GOPATH/src/kflow/libcolor/lib/libCOLOR won't work, as the env variables won't be resolved by go afaik. maybe test it with an absolute path instead and/or use "go build -n" to see how go would invoke "link" and maybe you need to link against "libboost_system" and "libxml2" as well, if "libCOLOR" really depends on it. Am Mittwoch, 1. März 2017 20:04:50 UTC+1 schrieb Chun Zhang: > > Yes, I tried quite a few varieties, such as: > //#cgo LDFLAGS: $GOPATH/src/kflow/libcolor/lib/libCOLOR with/without .a > //#cgo LDFLAGS: ${SRCDIR}kflow/libcolor/lib/libCOLOR with/without .a > //#cgo LDFLAGS: -L${SRCDIR}kflow/libcolor/lib -l:libCOLOR with/without .a > //#cgo LDFLAGS: -L${SRCDIR}kflow/libcolor/lib -lCOLOR with/without .a > > None above works for me so far, they are simply ignored during the > building process. I even played with the empty spaces at various places, > still no luck :( > > Thanks, > Chun > > > On Wednesday, March 1, 2017 at 1:57:15 PM UTC-5, therecipe wrote: >> >> did you try it without the ".a" suffix in the LDFLAGS? >> >> Am Dienstag, 28. Februar 2017 20:06:20 UTC+1 schrieb Chun Zhang: >>> >>> Hi, All, >>> >>> I have googled quite a bit about this issue, there are some tutorials >>> online. But most of them targeted either at older go releases or C instead >>> of C++. >>> >>> Can somebody please help me to figure out how to solve the following >>> issues? >>> >>> I have to use a static library, wrote in C++ in a go project. I have the >>> libcolor.a and the COLOR.h header file, the libcolor.a relies on some other >>> libraries, such as libboost_system.a, libxml2.a etc to build. >>> >>> I wrote a libcolor.swigcxx file as follows: >>> --------------------------- >>> %module libcoror >>> >>> %{ >>> #include "include/COLOR.h" >>> #include <stddef.h> >>> #include <vector> >>> >>> /* This is where we initialize any global parameters that are not >>> search-thread specific */ >>> extern void COLOR_init_global_config(int argc, char *argv[]); // from >>> the COLOR.h file, which is one of the APIs I would like to use >>> >>> %} >>> >>> #include "include/COLOR.h" >>> extern void COLOR_init_global_config(int argc, char *argv[]); >>> --------------------------- >>> >>> An empty libcolor.go file with the following lines was manually created >>> >>> --------------------------- >>> package libcolor >>> >>> // #cgo CFLAGS: -I . >>> // #cgo CXXFLAGS: -std=c++11 <--- this does not seem to work >>> // #cgo LDFLAGS: -L${SRCDIR}/lib/ -lCOLOR.a -lz <--- this is placed at >>> the correct place >>> --------------------------- >>> >>> When I tried to build this using "go build -x" CLI, I hit the following >>> error: >>> >>> WORK=/tmp/go-build797493895 >>> mkdir -p $WORK/klow/libcolor/_obj/ >>> mkdir -p $WORK/klow/ >>> swig -version >>> cd $WORK >>> /usr/local/go/pkg/tool/linux_amd64/compile -o >>> ./klow/libcolor/_obj/_go_.o -trimpath . -p main -complete -buildid >>> 73a7f9534f74346db4b3e0f48875da9dbf8bc2fd -D _$WORK ./swig_intsize.go >>> cd /home/chzhang/go/src/klow/libcolor >>> swig -go -cgo -intgosize 64 -module libcolor -o >>> $WORK/klow/libcolor/_obj/libcolor_wrap.cxx -outdir >>> $WORK/klow/libcolor/_obj/ -c++ libcolor.swigcxx >>> CGO_LDFLAGS="-g" "-O2" /usr/local/go/pkg/tool/linux_amd64/cgo -objdir >>> $WORK/klow/libcolor/_obj/ -importpath klow/libcolor -- -I >>> $WORK/klow/libcolor/_obj/ $WORK/klow/libcolor/_obj/libcolor.go >>> cd $WORK >>> gcc -fdebug-prefix-map=a=b -c trivial.c >>> gcc -gno-record-gcc-switches -c trivial.c >>> cd /home/chzhang/go/src/klow/libcolor >>> gcc -I . -fPIC -m64 -pthread -fmessage-length=0 >>> -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -I >>> $WORK/klow/libcolor/_obj/ -g -O2 -o $WORK/klow/libcolor/_obj/_cgo_main.o -c >>> $WORK/klow/libcolor/_obj/_cgo_main.c >>> gcc -I . -fPIC -m64 -pthread -fmessage-length=0 >>> -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -I >>> $WORK/klow/libcolor/_obj/ -g -O2 -o $WORK/klow/libcolor/_obj/_cgo_export.o >>> -c $WORK/klow/libcolor/_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/klow/libcolor/_obj/ -g -O2 -o >>> $WORK/klow/libcolor/_obj/_tmp_go-build797493895_klow_libcolor__obj_libcolor.cgo2.o >>> >>> -c >>> $WORK/klow/libcolor/_obj/_tmp_go-build797493895_klow_libcolor__obj_libcolor.cgo2.c >>> g++ -I . -fPIC -m64 -pthread -fmessage-length=0 >>> -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -I >>> $WORK/klow/libcolor/_obj/ -g -O2 -o >>> $WORK/klow/libcolor/_obj/_tmp_go-build797493895_klow_libcolor__obj_libcolor_wrap.cxx.o >>> >>> -c $WORK/klow/libcolor/_obj/libcolor_wrap.cxx >>> # klow/libcolor >>> In file included from $WORK/klow/libcolor/_obj/libcolor_wrap.cxx:243:0: >>> ./include/COLOR.h:13:43: warning: defaulted and deleted functions only >>> available with -std=c++11 or -std=gnu++11 >>> PerSessionData(const PerSessionData &d)=default; >>> ^ >>> ./include/COLOR.h:14:53: warning: defaulted and deleted functions only >>> available with -std=c++11 or -std=gnu++11 >>> PerSessionData& operator=(const PerSessionData&d)=default; >>> ^ >>> g++ -I . -fPIC -m64 -pthread -fmessage-length=0 >>> -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -o >>> $WORK/klow/libcolor/_obj/_cgo_.o $WORK/klow/libcolor/_obj/_cgo_main.o >>> $WORK/klow/libcolor/_obj/_cgo_export.o >>> $WORK/klow/libcolor/_obj/_tmp_go-build797493895_klow_libcolor__obj_libcolor.cgo2.o >>> >>> $WORK/klow/libcolor/_obj/_tmp_go-build797493895_klow_libcolor__obj_libcolor_wrap.cxx.o >>> >>> -g -O2 >>> # klow/libcolor >>> /tmp/go-build797493895/klow/libcolor/_obj/_tmp_go-build797493895_klow_libcolor__obj_libcolor_wrap.cxx.o: >>> >>> In function `_wrap_COLOR_init_global_config_libcolor_3cea422eb6211fe0': >>> /tmp/go-build/klow/libcolor/_obj/libcolor_wrap.cxx:285: undefined >>> reference to `COLOR_init_global_config(int, char**)' >>> collect2: error: ld returned 1 exit status >>> >>> >>> Looks like there are two errors: >>> 1, the C++11 warning >>> 2, the linker can't find the function COLOR_init_global_config in the >>> static library. That means the compiler directives I defined in libcolor.go >>> was not successfully passed to the compiler. From the log, looks like >>> another libcolor.go was generated in the $WORK directory by swig. The one I >>> manually created was not used at all. >>> >>> Can somebody please help me to figure out what I need to do to get this >>> compiled? The tutorial on swig.org does not seem to help. I tried to >>> manually build as in >>> >>> http://zacg.github.io/blog/2013/06/06/calling-c-plus-plus-code-from-go-with-swig/ >>> But the 6c etc go tools does not exist anymore. >>> >>> >>> Thanks, >>> Chun >>> >>> -------------------------------- >>> >>> This is my setup >>> go version go1.7.1 linux/amd64 >>> GOARCH="amd64" >>> GOBIN="" >>> GOEXE="" >>> GOHOSTARCH="amd64" >>> GOHOSTOS="linux" >>> GOOS="linux" >>> GOPATH="/home/chzhang/go" >>> GORACE="" >>> GOROOT="/usr/local/go" >>> GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" >>> CC="gcc" >>> GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 >>> -fdebug-prefix-map=/tmp/go-build155119108=/tmp/go-build >>> -gno-record-gcc-switches" >>> CXX="g++" >>> CGO_ENABLED="1" >>> >>> >>> -- 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.