georust / gdal

Rust bindings for GDAL
https://crates.io/crates/gdal
MIT License
339 stars 92 forks source link

Cross-compile for aarch64-linux-gnu #532

Open arya-pathak opened 2 months ago

arya-pathak commented 2 months ago

Has this crate successfully been compiled for aarch64-linux-gnu? I have installed the crate, switched to nightly, added the target and wrote a build script. Here are the contents of build.rs:

fn main() {
    println!("cargo:rustc-link-lib=gdal");
}

The crates seem to be compiling fine but it breaks at the linking stage. The compiled C binaries of GDAL are for the x86_64 target. Error message:

  = note: /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /lib/../lib/libgdal.so when searching for -lgdal
          /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /lib/../lib/libgdal.a when searching for -lgdal
          /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/lib/../lib/libgdal.so when searching for -lgdal
          /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/lib/../lib/libgdal.a when searching for -lgdal
          /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /lib/libgdal.so when searching for -lgdal
          /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /lib/libgdal.a when searching for -lgdal
          /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/lib/libgdal.so when searching for -lgdal
          /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/lib/libgdal.a when searching for -lgdal
          /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: cannot find -lgdal: No such file or directory
          /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /lib/../lib/libgdal.so when searching for -lgdal
          /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/lib/../lib/libgdal.so when searching for -lgdal
          /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /lib/libgdal.so when searching for -lgdal
          /usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/lib/libgdal.so when searching for -lgdal
          collect2: error: ld returned 1 exit status

More details on the issue can be found here.

How can I fix this?

cc: @rkshthrmsh