rust-cross / rust-musl-cross

Docker images for compiling static Rust binaries using musl-cross
MIT License
617 stars 68 forks source link

Unable to work with `shmdt`, `sprintf`, etc. #93

Closed ryuyz closed 1 year ago

ryuyz commented 1 year ago

Thank you for your great toolchain, which helps me a lot.

I'm trying to build a static library for aarch64-unknown-linux-musl on a M1 Max MBP (aarch64).

I wrote a Dockerfile to add alsa as a static library to your image:

# musl-alsa.Dockerfile
FROM messense/rust-musl-cross:aarch64-musl-arm64

RUN VERS=1.2.8 \
    && cd /home/rust/libs \
    && curl -LO https://www.alsa-project.org/files/pub/lib/alsa-lib-${VERS}.tar.bz2 \
    && tar xf alsa-lib-${VERS}.tar.bz2 && cd alsa-lib-${VERS} \
    && CC=${TARGET_CC} \
    ./configure --enable-shared=no --enable-static=yes \
    --prefix=${TARGET_HOME} \
    --host=${RUST_MUSL_CROSS_TARGET} \
    && make && make install \
    && cd .. && rm -rf alsa-lib-${VERS}.tar.bz2 alsa-lib-${VERS} \
    && apt-get update && apt-get install -y pkg-config

and tried to build an example in cpal, which is an audio library and requires alsa:

# build an image
docker build -t musl-alsa - < musl-alsa.Dockerfile

# try to build cpal
git clone git@github.com:RustAudio/cpal.git && cd cpal
docker run --rm -it -v "$(pwd)":/home/rust/src musl-alsa cargo build --example beep

and failed:

error: linking with `aarch64-unknown-linux-musl-gcc` failed: exit status: 1
  |
  = note: "aarch64-unknown-linux-musl-gcc" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/self-contained/crt1.o" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/self-contained/crti.o" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/self-contained/crtbegin.o" "/tmp/rustcB1I7n5/symbols.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.108vka1lx9z939zw.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.11hy0qxyieu6sf6x.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.14gsuimjq40cqfy7.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.14hd1whr1lexkem3.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.18q3q130k14z6d7a.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1d7u6a4rehdzxi5a.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1eslah81kcnp5ygp.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1gi44auxcslgo407.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1i2r1xe639yr107m.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1j8v81kzqt3dnhjt.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1ldodtyf98wyvzz2.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1m3fji6lineswyt8.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1nl8d5mqq2hjlip4.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1qcecuow3k26n7vz.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1rrtoz4gghcyiqwe.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1sozhwarfc8gap4b.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1tbte3xbpmo7o97m.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1uyrhf26n9lo4uvq.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.1xqmx1skdy09z0ud.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.20joj5dyz2166zt5.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.20rq8t0uhpjwt4lg.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.21bj8xal9rkf0w48.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.22ti6rk3psfzwt05.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2a0xjkm038d44uhc.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2b4gbbkdizr01wy8.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2dtw9sba8xmc6o1q.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2e9fyl9pcj9i53y8.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2fsnq78zvidu8qve.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2g20wicttmo2pbjt.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2h8crp2akdqnsmwo.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2h93difhuamoa4s6.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2hcrfqwuogf7wt7g.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2hmdb5j0q83jlo7c.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2nco61kagrn609xv.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2nkm0srxcidqyhdw.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2r7fgt9s7p777we8.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.2zhrhgl330u6mtzr.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3452r73mt4wkqx5l.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.34830lfv7f3na5ek.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.35fobi47cds8mjey.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.38rdut6pli0pncq.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3bfugphoxzfi7yiu.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3cp84615finy20zh.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3f85vudkerb6rvb9.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3frbzb8qhureywyj.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3gltyhsselt8s4oj.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3ho225qbaq4v94rn.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3jgy17nkjd2h372j.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3kw6403hxrmglrtn.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3lzcysqxq8z3kxx6.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3ncy2tcg787wjf9g.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3ng3pp8ra35rqg4k.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3o161qjclryoc0ul.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3q32bc8yn5w2bqua.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3ur5misjvtq875gc.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.3zeb3o5btocep9of.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4230aeb3bz6pz01h.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.44j5f401o08qn4ry.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.46c6h60zy2al37q4.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.46rfspofdbe4q1hf.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.47l3mtosh73fwjr9.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4ber539yb2xuiaey.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4bfnn26cxy5wxk08.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4dcjts2dmqpzna1y.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4ddmezs6t2goorhc.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4fpm5wpqfwxbg8t8.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4gsnfbtum2wia7ot.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4hi8lvtkcb6osrh7.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4iz0g5co1yezbftd.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4osf5nekbo03y9pa.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4pckyrnv723mu2px.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4pd76ve8ij1ht6ex.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4qd5igszqm91qjo9.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4tm0b6jq7mqsd3fs.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4ubn4g3fm02knlpu.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4uceplwxbff7qnfc.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4w3khxovfdf9lmfh.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4xnrey424hgs14z0.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4zprl41vaiss4j7y.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.4zra01lj1zlps0ho.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.50kz4llmvbgz9162.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.518v2moad5b0b76r.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.52s9zo5ppqwwt2hz.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.53n9xgfqx3f2jquq.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.545l8nsglcpew0y.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.58sh95y6ydix35zo.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.5dmoiqkpi0bo9wa5.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.6tbdercwy76qfax.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.870uz6fdud0pbpe.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.bvgxlnuyu3uig0f.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.cs4ideqy7hlzqnl.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.ei59hot1o2emql0.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.far4tnjrvwb1jdl.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.gbhfnd89ep6zes5.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.o8p6vnagadlobxb.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.o9k0usxdvefau73.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.pc8nmop3ncgtlml.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.qrtfko0mchbdbvu.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.sokp3ea4ip27om9.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.v4lxv6rqds5w5tl.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.vfcoc02kkrut1pb.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.w4emfa9x43i0fe8.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.wbru9bu1gs5g72k.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.ya86o7q5oc4fp8i.rcgu.o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3.43n7fqotntfvgsxr.rcgu.o" "-Wl,--as-needed" "-L" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps" "-L" "/home/rust/src/target/debug/deps" "-L" "/usr/local/musl/aarch64-unknown-linux-musl/usr/local/musl/aarch64-unknown-linux-musl/lib" "-L" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib" "-Wl,-Bstatic" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libcpal-7cbbcd6b7a4eead0.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libdasp_sample-e81868081767a32c.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libparking_lot-45292223d31a8683.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libparking_lot_core-fb2de2510fcb534f.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libsmallvec-bd66671ab1d2a2f1.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/liblock_api-dd53ba72c6f47ee9.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libscopeguard-85a8fbf82dd1dc62.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libalsa-3225b0ed1383dfee.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libnix-a6a6637dd7f1d051.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libcfg_if-25271fe0908a4854.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libalsa_sys-48f039910235507d.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libclap-5432ef0d6c3ee7e0.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libstrsim-82004923065d5417.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libis_terminal-2646d8fe700a54dc.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/librustix-ae635a5384a0f1d2.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/liblinux_raw_sys-8aa1b6a7ae5c681b.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libio_lifetimes-de6c3917e548a209.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/liblibc-cc69a03504911d85.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libclap_lex-64f7a6618da31468.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libos_str_bytes-d8f17c4ab8e1753d.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libtermcolor-bf42a4a6473fe304.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libbitflags-91833317a9890754.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libonce_cell-2120e4427f5e651b.rlib" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/deps/libanyhow-67ee4143d891e230.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libstd-ba05123e4e4ced22.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libpanic_unwind-b6a6af180fad3c33.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libobject-a12966f4c21157e3.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libmemchr-7cee88ae89edb258.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libaddr2line-0950c2f2547c6d2f.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libgimli-034a711b30de602d.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/librustc_demangle-1712a56b96360282.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libstd_detect-108e3aeeb669714c.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libhashbrown-36d90ada07fcb915.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libminiz_oxide-bc5ce7faad390a96.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libadler-3ca09e4be01fcd26.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/librustc_std_workspace_alloc-de78900f22438d3b.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libunwind-cf1c4a0090ffea18.rlib" "-lunwind" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libcfg_if-d55267804830a56d.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/liblibc-758ae7cefe1ddec6.rlib" "-lc" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/liballoc-97a40686aafc00b1.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/librustc_std_workspace_core-bf52e105815d22ab.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libcore-28fd2826f395d402.rlib" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/libcompiler_builtins-e3b27fe090a69036.rlib" "-Wl,-Bdynamic" "-lasound" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-nostartfiles" "-L" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib" "-L" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/self-contained" "-o" "/home/rust/src/target/aarch64-unknown-linux-musl/debug/examples/beep-44a41a301007bbb3" "-Wl,--gc-sections" "-static" "-no-pie" "-Wl,-zrelro,-znow" "-nodefaultlibs" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/self-contained/crtend.o" "/root/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-musl/lib/self-contained/crtn.o"
  = note: /usr/local/musl/bin/../lib/gcc/aarch64-unknown-linux-musl/9.2.0/../../../../aarch64-unknown-linux-musl/bin/ld: /usr/local/musl/bin/../lib/gcc/aarch64-unknown-linux-musl/9.2.0/../../../../aarch64-unknown-linux-musl/lib/libasound.a(shmarea.o): in function `snd_shm_area_destroy':
          /home/rust/libs/alsa-lib-1.2.8/src/shmarea.c:100: undefined reference to `shmdt'
          /usr/local/musl/bin/../lib/gcc/aarch64-unknown-linux-musl/9.2.0/../../../../aarch64-unknown-linux-musl/bin/ld: /usr/local/musl/bin/../lib/gcc/aarch64-unknown-linux-musl/9.2.0/../../../../aarch64-unknown-linux-musl/lib/libasound.a(shmarea.o): in function `snd_shm_area_destructor':
          /home/rust/libs/alsa-lib-1.2.8/src/shmarea.c:114: undefined reference to `shmdt'
          /usr/local/musl/bin/../lib/gcc/aarch64-unknown-linux-musl/9.2.0/../../../../aarch64-unknown-linux-musl/bin/ld: /usr/local/musl/bin/../lib/gcc/aarch64-unknown-linux-musl/9.2.0/../../../../aarch64-unknown-linux-musl/lib/libasound.a(control_hw.o): in function `snd_ctl_hw_open':
          /home/rust/libs/alsa-lib-1.2.8/src/control/control_hw.c:413: undefined reference to `sprintf'

          # too long

          /usr/local/musl/bin/../lib/gcc/aarch64-unknown-linux-musl/9.2.0/../../../../aarch64-unknown-linux-musl/bin/ld: /usr/local/musl/bin/../lib/gcc/aarch64-unknown-linux-musl/9.2.0/../../../../aarch64-unknown-linux-musl/lib/libasound.a(pcm_direct.o): in function `snd_pcm_direct_semaphore_down':
          /home/rust/libs/alsa-lib-1.2.8/src/pcm/pcm_direct.h:289: undefined reference to `semop'
          /usr/local/musl/bin/../lib/gcc/aarch64-unknown-linux-musl/9.2.0/../../../../aarch64-unknown-linux-musl/bin/ld: /usr/local/musl/bin/../lib/gcc/aarch64-unknown-linux-musl/9.2.0/../../../../aarch64-unknown-linux-musl/lib/libasound.a(pcm_direct.o): in function `snd_pcm_direct_semaphore_discard':
          /home/rust/libs/alsa-lib-1.2.8/src/pcm/pcm_direct.h:279: undefined reference to `semctl'
          /usr/local/musl/bin/../lib/gcc/aarch64-unknown-linux-musl/9.2.0/../../../../aarch64-unknown-linux-musl/bin/ld: /usr/local/musl/bin/../lib/gcc/aarch64-unknown-linux-musl/9.2.0/../../../../aarch64-unknown-linux-musl/lib/libasound.a(pcm_direct.o): in function `snd_pcm_direct_semaphore_up':
          /home/rust/libs/alsa-lib-1.2.8/src/pcm/pcm_direct.h:300: undefined reference to `semop'
          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#cargorustc-link-libkindname)

error: could not compile `cpal` due to previous error

It looks the linker failed to work with shmdt, sprintf, etc.

Is it because I gave wrong linker configs, or because these are not available in the musl C library? I'd be glad if you could help me.

messense commented 1 year ago

The alsa-sys crate that cpal depends on Linux doesn't seem to support static linking? https://github.com/diwic/alsa-sys/issues/10

ryuyz commented 1 year ago

Ah you're right that I should check the alsa-lib's dependents first, thank you.