cross-rs / cross

“Zero setup” cross compilation and “cross testing” of Rust crates
Apache License 2.0
6.21k stars 354 forks source link

Linker errors when building SLint using cross for arm64 in Github Action #1523

Closed tjallingt closed 2 days ago

tjallingt commented 2 days ago

Checklist

Describe your issue

I'm trying to compile an SLint application using cross for aarch64-unknown-linux-gnu. Slint requires some libraries to be installed so it can be linked against them. I can successfully install these libraries using the pre-build option in Cross.toml.

This all works when I run cross on my windows computer but when I try to build the application in Github Actions it stops working because of a linker error:

See the job output here https://github.com/tjallingt/slint-test/actions/runs/9793794798/job/27042468372

error: linking with `aarch64-linux-gnu-gcc` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="/rust/lib/rustlib/x86_64-unknown-linux-gnu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/rust/bin" VSLANG="1033" "aarch64-linux-gnu-gcc" "/tmp/rustcXRIUPW/symbols.o" "/target/aarch64-unknown-linux-gnu/release/deps/test_slint_build-e579b4fef4273c8a.test_slint_build.fda4c3189946baa9-cgu.0.rcgu.o" "/target/aarch64-unknown-linux-gnu/release/deps/test_slint_build-e579b4fef4273c8a.test_slint_build.fda4c3189946baa9-cgu.1.rcgu.o" "/target/aarch64-unknown-linux-gnu/release/deps/test_slint_build-e579b4fef4273c8a.test_slint_build.fda4c3189946baa9-cgu.2.rcgu.o" "/target/aarch64-unknown-linux-gnu/release/deps/test_slint_build-e579b4fef4273c8a.test_slint_build.fda4c3189946baa9-cgu.3.rcgu.o" "/target/aarch64-unknown-linux-gnu/release/deps/test_slint_build-e579b4fef4273c8a.test_slint_build.fda4c3189946baa9-cgu.4.rcgu.o" "/target/aarch64-unknown-linux-gnu/release/deps/test_slint_build-e579b4fef4273c8a.test_slint_build.fda4c3189946baa9-cgu.5.rcgu.o" "/target/aarch64-unknown-linux-gnu/release/deps/test_slint_build-e579b4fef4273c8a.2cm7bpl0g1w0xxkx.rcgu.o" "-Wl,--as-needed" "-L" "/target/aarch64-unknown-linux-gnu/release/deps" "-L" "/target/release/deps" "-L" "/usr/lib/aarch64-linux-gnu" "-L" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/target/aarch64-unknown-linux-gnu/release/deps/libslint-f60b552618cc434b.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libi_slint_backend_selector-e113d2ddaacdb712.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libi_slint_backend_linuxkms-417d662378fc2253.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libnix-ad32ae709477aa1f.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libxkbcommon-a02e42b59874ab08.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libxkeysym-afb682c4ad207573.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libmemmap2-4835a327ddb3f461.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libinput-84c79a011a141340.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libudev-b36d483555a156db.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/liblibudev_sys-bbb438d32785b173.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libio_lifetimes-83dbb2b850dcf1b9.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libinput_sys-34222c2031c10677.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libcalloop-69bc5955d765085a.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libpolling-ce2a8876c80b5231.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/librustix-dca50347ad86e9a9.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/liblinux_raw_sys-fd2f2d76346a5017.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libtracing-8b3b45959452a598.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libpin_project_lite-0de2bdfb274c640e.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libtracing_core-f2ca00f0c24c8248.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libglutin-1cea63566369c43c.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libglutin_egl_sys-677130d5607a3a92.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libraw_window_handle-6f4ea4e082b5467a.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libi_slint_renderer_femtovg-cf02edd13805917a.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libfemtovg-57f001c47b7ecf06.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libglow-e952e8b4c8fe0b96.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libimage-b23b146ccb142541.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libimgref-b98a968d6bb3d9a0.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/librustybuzz-a0e46121990a84b2.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libttf_parser-99f2d9ae6bcf293e.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/liblru-9bbf94c63f30e52e.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libfnv-fd584b4f73db7182.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libgbm-f0a15303fe68f98c.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libgbm_sys-a868828d9c6acb45.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libdrm-74cfba9803df303a.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libdrm_fourcc-d1fa726bcfb619d1.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libdrm_ffi-04c0669cf3d375dc.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libnix-6b5490f5dc4e9a34.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libdrm_sys-2df825d59e74d107.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libi_slint_core-ea7cbc1ca4640954.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libpin_weak-39da177ed0f9173e.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libslab-cb02e6a6d34f800a.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libimage-106e793024a3d8d2.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libcolor_quant-3f621c86c9ed571c.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libbyteorder-ae0f7e48ac275287.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libjpeg_decoder-0974988c0c4539e8.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libclru-c309209afc9911a8.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/liblyon_extra-af7221c06c78f3e9.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libthiserror-ec3e101f49f6be68.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/liblyon_algorithms-ac382e9fde535caa.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libscopeguard-53354e0668703b72.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libscoped_tls_hkt-4045d1516055efb1.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libstrum-f004a10a782377b2.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libunicode_linebreak-7e634a65521ab6a9.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libpin_project-5c82a8e81813aa5f.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libunicode_segmentation-97ae1556279f42cf.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libonce_cell-caa24df1f770a3c1.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libvtable-65b67807dbfeba21.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libstable_deref_trait-a8d296ad35f58065.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libi_slint_common-17e33a0c09de62f7.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/liblibloading-4b0f7ff546148b36.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libresvg-b189593f925cb57d.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/librgb-a87b9f2e24d7d95d.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libusvg-a230a1ca95fcd880.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libbase64-55fd131c3cee2323.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libunicode_bidi-d2f4db061d70d0f0.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libunicode_vo-6e9d4276b8f0991d.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libdata_url-0a1292ee6ee98515.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libimagesize-6713fc0cc78cc820.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libxmlwriter-a045ce8d4552c4e5.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/librustybuzz-e1badadc5aa01033.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libunicode_bidi_mirroring-86eab0c2d93aa484.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libunicode_script-03de6eda68548a87.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libunicode_ccc-c8f6119b8e22e3a1.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libunicode_properties-e73825d6cea45765.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libfontdb-f086a0d4fc21f798.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libfontconfig_parser-6dc6e7555682d6e7.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libmemmap2-2b8f994c84477bfd.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/liblibc-9e36cb4ec7b97460.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libtinyvec-4a1227a6ae84124e.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libtinyvec_macros-0762584a9d218552.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libslotmap-12fba0939f9cb804.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libttf_parser-9d987bfd9c556fda.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libsimplecss-daea8d79ab6c7817.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libroxmltree-ce8f6889a382dc1b.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libsvgtypes-c588bb2bf47a121f.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libkurbo-65046417d7d20d67.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libsmallvec-6ea9eda3a91a778a.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libsiphasher-395c9dff1fef8df8.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libtiny_skia-c39a7fdbc27f4545.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libpng-ce904ec15e0f5973.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libflate2-452742f578353313.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libminiz_oxide-b9f5baefcdd426a2.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libfdeflate-59926509b0ed7494.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libsimd_adler32-c1c487168ab09740.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libcrc32fast-ce1a1b651447788b.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libbitflags-4e7c4f62beb8ce6d.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libcfg_if-771f5d761b1e752f.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/liblog-42316aeda1a414e1.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libtiny_skia_path-e945f707ae8c97a1.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libbytemuck-750053e8d527b15b.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libstrict_num-4ebdcf0e4582407b.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libfloat_cmp-cf5bebb79e890c10.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libarrayref-cd5abaa0eb4acce6.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/liblyon_path-0ee4e16958829f96.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/liblyon_geom-650d8798f261887f.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libarrayvec-b55f4cf313eeb57f.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libconst_field_offset-9d35f5b71f2b63e3.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libfield_offset-16cb5020855bc8f9.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libmemoffset-c9b771c5e0d7e99c.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libportable_atomic-ebb1da4d95bb79aa.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libeuclid-0034732fb59d97c9.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libnum_traits-34891afc8defefb2.rlib" "/target/aarch64-unknown-linux-gnu/release/deps/libbitflags-49248b91fbe2c123.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libstd-9db51037f7732c7f.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libpanic_unwind-43f7084971578043.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libobject-55e3c3e99d7ea57c.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libmemchr-fb53010b8d947b31.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libaddr2line-6f437829797b59f9.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libgimli-c465d68cd448aa2e.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_demangle-12979ddb857b6856.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libstd_detect-ecc5f92a35a5dcae.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libhashbrown-09b6240c5d3892f5.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-e35646347e036948.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libminiz_oxide-893df93494354b60.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libadler-297a87c8b999e355.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libunwind-eb6321afc60f0508.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcfg_if-e65240dca34fcbd0.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/liblibc-4b653d72a90009a1.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/liballoc-58548d24e1f3d56c.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/librustc_std_workspace_core-84c459117cd1fdc9.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcore-d6e05faaecef4023.rlib" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib/libcompiler_builtins-c35031b3bb3289ef.rlib" "-Wl,-Bdynamic" "-lxkbcommon" "-ludev" "-linput" "-lgbm" "-ldl" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/rust/lib/rustlib/aarch64-unknown-linux-gnu/lib" "-o" "/target/aarch64-unknown-linux-gnu/release/deps/test_slint_build-e579b4fef4273c8a" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-Wl,-O1" "-Wl,--strip-debug" "-nodefaultlibs"
  = note: /target/aarch64-unknown-linux-gnu/release/deps/libinput-84c79a011a141340.rlib(input-84c79a011a141340.input.4cdef8284cf4041e-cgu.4.rcgu.o): In function `_$LT$input..event..Event$u20$as$u20$input..FromRaw$LT$input_sys..libinput_event$GT$$GT$::try_from_raw::h3d1bc060185c795e':
          input.4cdef8284cf4041e-cgu.4:(.text._ZN87_$LT$input..event..Event$u20$as$u20$input..FromRaw$LT$input_sys..libinput_event$GT$$GT$12try_from_raw17h3d1bc060185c795eE+0x264): undefined reference to `libinput_event_get_switch_event'
          input.4cdef8284cf4041e-cgu.4:(.text._ZN87_$LT$input..event..Event$u20$as$u20$input..FromRaw$LT$input_sys..libinput_event$GT$$GT$12try_from_raw17h3d1bc060185c795eE+0x26c): undefined reference to `libinput_event_switch_get_base_event'
          /target/aarch64-unknown-linux-gnu/release/deps/libinput-84c79a011a141340.rlib(input-84c79a011a141340.input.4cdef8284cf4041e-cgu.3.rcgu.o): In function `_$LT$input..event..switch..SwitchToggleEvent$u20$as$u20$core..ops..drop..Drop$GT$::drop::h17e2e40e4729a121':
          input.4cdef8284cf4041e-cgu.3:(.text._ZN81_$LT$input..event..switch..SwitchToggleEvent$u20$as$u20$core..ops..drop..Drop$GT$4drop17h17e2e40e4729a121E+0x8): undefined reference to `libinput_event_switch_get_base_event'
          collect2: error: ld returned 1 exit status

  = note: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified
  = note: use the `-l` flag to specify native libraries to link
  = note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#rustc-link-lib)

error: could not compile `test-slint-build` (bin "test-slint-build") due to 1 previous error

What target(s) are you cross-compiling for?

aarch64-unknown-linux-gnu

Which operating system is the host (e.g computer cross is on) running?

What architecture is the host?

What container engine is cross using?

cross version

v0.2.5

Example

The entire sample application can be found here: https://github.com/tjallingt/slint-test

Additional information / notes

No response

Emilgardis commented 2 days ago

Are you sure you're using cross 0.2.5 on your own setup? Might be a problem fixed on the main branch not yet released

tjallingt commented 2 days ago

You are 100% right, i used cargo install cross --git https://github.com/cross-rs/cross to install cross locally and that one worked. Using cargo-binstall to install version 0.2.5 locally and rerunning produces the same error.

I'm sorry for wasting some time here (and thanks to whoever fixed the install/linker issue on main, i hope it gets released soon :) )