merged Bruce
On Thu, Oct 6, 2016 at 4:34 PM, Jason Wessel <[email protected]> wrote: > The go-cross package is explicitly for compiling target libraries on > the host system. When the target architecture matches the host > architecture it will actually use the host's linker and compiler > however which can result in the generation of the cgo.a library having > linker symbols which might not work properly when compiling other > packages. > > A typical error looks like this when building consul-migrate: > > /opt/build-intel-x86/tmp/sysroots/x86_64-linux/usr/lib/ > x86_64-linux/go/pkg/tool/linux_amd64/link: running x86_64-yocto-linux-gcc > failed: exit status 1 > /opt/build-intel-x86/tmp/sysroots/x86_64-linux/usr/ > libexec/x86_64-yocto-linux/gcc/x86_64-yocto-linux/5.2.0/ld: > /opt/build-intel-x86/tmp/work/core2-64-yocto-linux/consul- > migrate/git-r0/build-tmp/go-link-956548052/000002.o: unrecognized > relocation (0x2a) in section `.text' > /opt/build-intel-x86/tmp/sysroots/x86_64-linux/usr/ > libexec/x86_64-yocto-linux/gcc/x86_64-yocto-linux/5.2.0/ld: final link > failed: Bad value > collect2: error: ld returned 1 exit status > > The fix is to use the make.bash --target-only option to properly build > the libraries with the target toolchain. The "go" binaries are thrown > away but the cross compilation libraries are preserved. The sysroot > strip also has to be disabled because it will run the host strip on > the target binaries. > > Signed-off-by: Jason Wessel <[email protected]> > --- > recipes-devtools/go-cross/go-cross.inc | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/recipes-devtools/go-cross/go-cross.inc > b/recipes-devtools/go-cross/go-cross.inc > index 613e9c7..181f4aa 100644 > --- a/recipes-devtools/go-cross/go-cross.inc > +++ b/recipes-devtools/go-cross/go-cross.inc > @@ -2,6 +2,10 @@ inherit cross > > DEPENDS += "go-native" > > +# Prevent runstrip from running because you get errors when the host arch > != target arch > +#INHIBIT_PACKAGE_STRIP = "1" > +STRIP = "echo" > + > export GOHOSTOS = "${BUILD_GOOS}" > export GOHOSTARCH = "${BUILD_GOARCH}" > export GOOS = "${TARGET_GOOS}" > @@ -26,6 +30,11 @@ do_compile() { > > cd src > ./make.bash --host-only > + # Ensure cgo.a is built with the target toolchain > + export GOBIN="${B}/target/bin" > + rm -rf ${GOBIN} > + mkdir -p ${GOBIN} > + GO_FLAGS="-a" ./make.bash > } > > do_install() { > -- > 1.9.1 > > -- > _______________________________________________ > meta-virtualization mailing list > [email protected] > https://lists.yoctoproject.org/listinfo/meta-virtualization > -- "Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end"
-- _______________________________________________ meta-virtualization mailing list [email protected] https://lists.yoctoproject.org/listinfo/meta-virtualization
