cmetrics icon indicating copy to clipboard operation
cmetrics copied to clipboard

Cross compilation fails with ld errors

Open pfrcks opened this issue 2 years ago • 1 comments

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?

pfrcks avatar Sep 15 '23 01:09 pfrcks

still seeing the issue ?

edsiper avatar Aug 19 '24 19:08 edsiper

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.

cosmo0920 avatar Aug 21 '24 09:08 cosmo0920

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

cosmo0920 avatar Aug 21 '24 10:08 cosmo0920