ah, sorry I didn't properly read the whole thread before posting
if it works for you when you set the flags through the CLI, but not when 
you put them in a go file, then there is something wrong with how you 
embedded the flags in you go file.

like Ian said, you need to define the flags in a comment directly before 
using 
import "C"

so, something like this should work
package main

/*
#cgo LDFLAGS: -L${SRCDIR}kflow/libcolor/lib -lCOLOR
*/
import "C"


Am Mittwoch, 1. März 2017 21:02:25 UTC+1 schrieb Chun Zhang:
>
> Thanks! I didn't write out libboost etc just to make sure that at least 
> one lib is correctly linked, if so, I should see other link errors and I 
> can just keep passing in required libs. This is exactly what happens when I 
> pass CGO_LDFLAGS= explicitly in the CLI. 
>
> However, when using the directives in the go file, the CGO_LDFLAGS= as far 
> as I see in the `go build -x` log never includes any the link directives. 
>
> Regards,
> Chun
>
>
>
> On Wednesday, March 1, 2017 at 2:30:12 PM UTC-5, therecipe wrote:
>>
>> 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"
>>>>>
>>>>>
>>>>>
Am Mittwoch, 1. März 2017 21:02:25 UTC+1 schrieb Chun Zhang:
>
> Thanks! I didn't write out libboost etc just to make sure that at least 
> one lib is correctly linked, if so, I should see other link errors and I 
> can just keep passing in required libs. This is exactly what happens when I 
> pass CGO_LDFLAGS= explicitly in the CLI. 
>
> However, when using the directives in the go file, the CGO_LDFLAGS= as far 
> as I see in the `go build -x` log never includes any the link directives. 
>
> Regards,
> Chun
>
>
>
> On Wednesday, March 1, 2017 at 2:30:12 PM UTC-5, therecipe wrote:
>>
>> 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"
>>>>>
>>>>>
>>>>>
Am Mittwoch, 1. März 2017 21:02:25 UTC+1 schrieb Chun Zhang:
>
> Thanks! I didn't write out libboost etc just to make sure that at least 
> one lib is correctly linked, if so, I should see other link errors and I 
> can just keep passing in required libs. This is exactly what happens when I 
> pass CGO_LDFLAGS= explicitly in the CLI. 
>
> However, when using the directives in the go file, the CGO_LDFLAGS= as far 
> as I see in the `go build -x` log never includes any the link directives. 
>
> Regards,
> Chun
>
>
>
> On Wednesday, March 1, 2017 at 2:30:12 PM UTC-5, therecipe wrote:
>>
>> 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"
>>>>>
>>>>>
>>>>>
Am Mittwoch, 1. März 2017 21:02:25 UTC+1 schrieb Chun Zhang:
>
> Thanks! I didn't write out libboost etc just to make sure that at least 
> one lib is correctly linked, if so, I should see other link errors and I 
> can just keep passing in required libs. This is exactly what happens when I 
> pass CGO_LDFLAGS= explicitly in the CLI. 
>
> However, when using the directives in the go file, the CGO_LDFLAGS= as far 
> as I see in the `go build -x` log never includes any the link directives. 
>
> Regards,
> Chun
>
>
>
> On Wednesday, March 1, 2017 at 2:30:12 PM UTC-5, therecipe wrote:
>>
>> 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.

Reply via email to