I also run into this problem these days. Finally I found that adding "env CGO_LDFLAGS=-no-pie" to go build command line could solve this problem. For example, "env CGO_LDFLAGS=-no-pie go build -o main main.go".
On Monday, July 1, 2019 at 8:22:08 AM UTC+8, czha...@gmail.com wrote: > > I posted this question in SO, and was suggested to post here for more help: > > > ---------------------- > > I tried to link an existing C++ library to go code. The C++ library only > has a static library and a header file, no source code. > > I used swigc to generate a libfoo.go and I wrote a simple libb.go to build > this library. This worked well on ubuntu 16.04 with gcc-6 earlier. > > However, once I upgraded to ubuntu 18, and even with older go1.9 and > gcc-6, which used to work, I am hitting the following error: > > /usr/bin/ld: ./lib/libfoo.a(parser.o): relocation R_X86_64_32S against symbol > `xmlSAX2IgnorableWhitespace' can not be used when making a PIE object; > recompile with -fPIC > /usr/bin/ld: ./lib/libfoo.a(tree.o): relocation R_X86_64_32 against > `.rodata.str1.1' can not be used when making a PIE object; recompile with > -fPIC > > I have downgraded both go compiler and gcc to the version that used to > work. > > The following is the libb.go that used to work > > /* > #cgo CXXFLAGS: -std=c++11 -D_GLIBCXX_USE_CXX11_ABI=0 -w > #cgo CFLAGS: -I${SRCDIR}/include -w > #cgo LDFLAGS: -Wl -rpath,./lib, -L${SRCDIR}/lib -l:libfoo.a -l:libxml2.a > */import "C" > > What should I do get this fixed? I searched and it seems that I have to > recompile that static library, which is mission impossible in my case. I > tried to pass the -no-pie parameter to LDFLAGS, that didn't work either. > > > > Thanks! > > ---------------------- > > > 1, first thing first, I don't have the c++ source code, so I can't > recompile it. > > 2, I am using ubuntu 18, initially, I believe I install go via "apt-get > install", but later I uninstall that version using "apt-get remove" , and > then downloaded go1.9 pkg from official website and install directly. > > 3, go env gives: > > GOARCH="amd64" > > GOBIN="" > > GOEXE="" > > GOHOSTARCH="amd64" > > GOHOSTOS="linux" > > GOOS="linux" > > GOPATH="/home/coolart/work/go" > > GORACE="" > > GOROOT="/usr/local/go" > > GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" > > GCCGO="gccgo" > > CC="gcc" > > GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 > -fdebug-prefix-map=/tmp/go-build628698308=/tmp/go-build > -gno-record-gcc-switches" > > CXX="g++" > > CGO_ENABLED="1" > > CGO_CFLAGS="-g -O2" > > CGO_CPPFLAGS="" > > CGO_CXXFLAGS="-g -O2" > > CGO_FFLAGS="-g -O2" > > CGO_LDFLAGS="-g -O2" > > PKG_CONFIG="pkg-config" > > > 4, some system information > > > go version go1.9.7 linux/amd64 > > > No LSB modules are available. > > Distributor ID: Ubuntu > > Description: Ubuntu 18.04.2 LTS > > Release: 18.04 > > Codename: bionic > > > Using built-in specs. > > COLLECT_GCC=gcc > > COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper > > Target: x86_64-linux-gnu > > Configured with: ../src/configure -v --with-pkgversion='Ubuntu > 5.5.0-12ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs > --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr > --program-suffix=-5 --enable-shared --enable-linker-build-id > --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix > --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu > --enable-libstdcxx-debug --enable-libstdcxx-time=yes > --with-default-libstdcxx-abi=new --enable-gnu-unique-object > --disable-vtable-verify --enable-libmpx --enable-plugin > --enable-default-pie --with-system-zlib --enable-objc-gc --enable-multiarch > --disable-werror --with-arch-32=i686 --with-abi=m64 > --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic > --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu > --target=x86_64-linux-gnu > > Thread model: posix > > gcc version 5.5.0 20171010 (Ubuntu 5.5.0-12ubuntu1) > > > Using built-in specs. > > COLLECT_GCC=g++ > > COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper > > Target: x86_64-linux-gnu > > Configured with: ../src/configure -v --with-pkgversion='Ubuntu > 5.5.0-12ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs > --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr > --program-suffix=-5 --enable-shared --enable-linker-build-id > --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix > --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu > --enable-libstdcxx-debug --enable-libstdcxx-time=yes > --with-default-libstdcxx-abi=new --enable-gnu-unique-object > --disable-vtable-verify --enable-libmpx --enable-plugin > --enable-default-pie --with-system-zlib --enable-objc-gc --enable-multiarch > --disable-werror --with-arch-32=i686 --with-abi=m64 > --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic > --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu > --target=x86_64-linux-gnu > > Thread model: posix > > gcc version 5.5.0 20171010 (Ubuntu 5.5.0-12ubuntu1) > > > > > > -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/bff66c41-db76-4f7a-b97f-5cf59e06cc25%40googlegroups.com.