Cross compilation fails with ld errors
Hi, I am trying to cross compile my go binary and am seeing the following errors
#17 6.637 CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc GOOS=linux GOARCH=arm64 go build -ldflags "-X 'main.revision=' -X 'main.builddate='" -buildmode=c-shared -o containerinventory.so . #17 39.58 # github.com/calyptia/cmetrics-go #17 39.58 /usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/local/lib/libcmetrics.a when searching for -lcmetrics #17 39.58 /usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/local/lib/libcmetrics.a when searching for -lcmetrics #17 39.58 /usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: cannot find -lcmetrics #17 39.58 /usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /lib/../lib/libcfl.a when searching for -lcfl #17 39.58 /usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /lib/libcfl.a when searching for -lcfl #17 39.58 /usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: cannot find -lcfl #17 39.58 /usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/local/lib/libmpack.a when searching for -lmpack #17 39.58 /usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/local/lib/libmpack.a when searching for -lmpack #17 39.58 /usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: cannot find -lmpack #17 39.58 /usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/local/lib/libxxhash.a when searching for -lxxhash #17 39.58 /usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/local/lib/libxxhash.a when searching for -lxxhash #17 39.58 /usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: cannot find -lxxhash
Host machine is amd64 and I am trying to cross compile to arm64. I install cmetrics and cmetrics-headers (0.6.0) before the cross compilation. This is sufficient for amd64 but for arm64 i see the errors above.
Any idea what can be done?
still seeing the issue ?
Host machine is amd64 and I am trying to cross compile to arm64. I install cmetrics and cmetrics-headers (0.6.0) before the cross compilation. This is sufficient for amd64 but for arm64 i see the errors above.
Any idea what can be done?
This could be done to install arm64 version of cmetrics package. This is because aarch64 gcc should search aarch64 version of cmetrics and its dependent libraries.
This could be done for the following step:
For arm64 library installation.
$ sudo apt install /path/to/cmetrics_*_arm64-headers.deb /path/to/cmetrics_*_arm64.deb
For arm64 gcc cross compiler:
$ sudo apt install gcc-aarch64-linux-gnu
For arm64 cross compilation:
$ CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc GOOS=linux GOARCH=arm64 go build -ldflags "-X 'main.revision=' -X 'main.builddate='" -buildmode=c-shared -o awesome-plugin-containerinventory-arm64.so .
Then, we get a shared file which is built for aarch64 Linux:
awesome-plugin-containerinventory-arm64.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=3500bbabf2d58307037280cb6657327bf5dd941d, with debug_info, not stripped