dropbox / rust-brotli

Brotli compressor and decompressor written in rust that optionally avoids the stdlib
https://dropbox.tech/infrastructure/-broccoli--syncing-faster-by-syncing-less
BSD 3-Clause "New" or "Revised" License
797 stars 83 forks source link

Linking errors when multiple brotli crate versions are used in the same project #179

Closed nyurik closed 2 months ago

nyurik commented 2 months ago

Cargo.toml

[dependencies]
brotli3 = { version = "3", package = "brotli" }
brotli4 = { version = "4", package = "brotli" }

src/main.rs

use std::io::Write as _;

fn main() {
    brotli3::CompressorWriter::new(Vec::new(), 1024, 11, 22)
        .write_all(b"foo")
        .unwrap();
    brotli4::CompressorWriter::new(Vec::new(), 1024, 11, 22)
        .write_all(b"foo")
        .unwrap();
}

Error

Full paths were replaced with ...

error: linking with `cc` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="..." VSLANG="1033" "cc" "-m64" "/tmp/rustcY05l9b/symbols.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.133juv20ssu9kx5.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.19h7r4ftiwvohtr6.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1jp147se0pjudyb9.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1mw1tzwdpxwe7gal.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1p5v78lurm2y1j8j.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1tkzryepvhwijd4t.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1ukf4wydapb94gtd.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1unl1ydiqzun1jf5.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1yt2ygkdy5cff2ah.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1yzo1zqqz0m1typd.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.21waacy63cw8jzh.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.2b25tgc7534isx4e.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.2c4ccwb0m8d5dkdb.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.2es25b3suaie8kyi.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.2nqeup0lm4txhksu.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.2omfb579ku67sx1r.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.2qt497k0a1qf8to7.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.35tj30t21tbglb8j.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.36r9llqj3hzzbitr.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.36x4f4p1oupq0waq.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3954sqj17vad0qwg.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3gg9d8lp8qb1eooy.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3ixd3cchxdfnywte.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3o6sc219lu89acjx.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3owev0dd3dbqwj0c.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3rimjp5wxl6g14u.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.3trqi574zyshws8k.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.40rmlrkv1t1lwaao.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.48qvpf3y1jd3qxvu.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4e6yhuj0de0ky1if.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4ejvbuy5ewfhl9a6.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4fyix76rpwp7b6tg.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4g0f3bw1ykr7vara.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4h417mi70vcfo6qc.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4ikcrhcivlt2bioh.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4jndbmquovo9x5oe.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4jsluazjzgp5nlf0.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4nu5rkzxyfwbbxtj.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4orcykm97828rn6t.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4ou04oykiq2pukmq.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4s24021dqwn620yn.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4tai1mwegmz2vxb.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.4tam7sxnqeoo0xgq.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.4ux245g7vbkrkmog.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4zdqm0kv81zu656v.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.51amt1iqu13qfyz0.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.53ve2f03c4oh7jbb.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.5ckt4kofyyw71xik.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.5e8lrpu3hcqgpx7w.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.fap3yc2f4jqodl3.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.i7tdbwg4h76mxjp.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.tq78jf6ov4fabhv.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.wfy9j5khq7pkm02.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.wqguzcmzkyfmrmc.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.x69949c9wlx3nlj.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.yb9pcwn4u1j5ot2.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.3vuuabm15e0wf9ad.rcgu.o" "-Wl,--as-needed" "-L" (.../target/debug/deps" "-L" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" (.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib" ".../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib" ".../target/debug/deps/libbrotli-82404c8524ef2312.rlib" ".../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib" ".../target/debug/deps/liballoc_stdlib-8babd639daafa6af.rlib" ".../target/debug/deps/liballoc_no_stdlib-5ff7ee24da185d85.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-6e3078511c661ac3.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-252c22ad03c975c9.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-d80cad399a4d0390.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-27491650d14ec48b.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-97d68acfa4555965.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-c70b304f6ac84900.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-d55f2ec1b1801f29.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-0b96f850bca44a32.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-ee200428a02d516d.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-53d84a0642c19f2b.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-217c01f7aaf0f8d4.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-2b97858586af9abb.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-cc333506f95be41d.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-690e7438295ce0c8.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-c9c6c96eccfdab53.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-cb895a9d9d73a7fa.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-433bd1aab5f6d647.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-5f8e0208f8278cbc.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-1088ecd7666b60f4.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" ".../target/debug/deps/mydemo-bd3cc94a77453027" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs"
  = note: /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderCreateInstance':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:69: multiple definition of `BrotliEncoderCreateInstance';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:69: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderSetParameter':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:109: multiple definition of `BrotliEncoderSetParameter';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:109: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderDestroyInstance':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:118: multiple definition of `BrotliEncoderDestroyInstance';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:118: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderIsFinished':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:134: multiple definition of `BrotliEncoderIsFinished';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:134: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderHasMoreOutput':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:139: multiple definition of `BrotliEncoderHasMoreOutput';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:139: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderSetCustomDictionary':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:144: multiple definition of `BrotliEncoderSetCustomDictionary'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:144: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderTakeOutput':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:163: multiple definition of `BrotliEncoderTakeOutput';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:163: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderVersion':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:170: multiple definition of `BrotliEncoderVersion';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:170: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderMaxCompressedSize':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:174: multiple definition of `BrotliEncoderMaxCompressedSize';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:174: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderCompress':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:178: multiple definition of `BrotliEncoderCompress';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:178: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderCompressStreaming':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:243: multiple definition of `BrotliEncoderCompressStreaming';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:243: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderCompressStream':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:263: multiple definition of `BrotliEncoderCompressStream';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:263: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderMallocU8':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:339: multiple definition of `BrotliEncoderMallocU8';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:339: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderFreeU8':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:354: multiple definition of `BrotliEncoderFreeU8';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:354: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderMallocUsize':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:370: multiple definition of `BrotliEncoderMallocUsize';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:370: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderFreeUsize':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:384: multiple definition of `BrotliEncoderFreeUsize';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:384: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderErrorString':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:144: multiple definition of `CBrotliDecoderErrorString';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:144: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderHasMoreOutput':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:149: multiple definition of `CBrotliDecoderHasMoreOutput';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:149: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderTakeOutput':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:156: multiple definition of `CBrotliDecoderTakeOutput';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:156: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderIsUsed':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:164: multiple definition of `CBrotliDecoderIsUsed';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:164: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderIsFinished':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:168: multiple definition of `CBrotliDecoderIsFinished';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:168: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderGetErrorCode':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:174: multiple definition of `CBrotliDecoderGetErrorCode';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:174: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderGetErrorString':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:180: multiple definition of `CBrotliDecoderGetErrorString';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:180: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliCreateInstance':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:50: multiple definition of `BroccoliCreateInstance';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:50: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliCreateInstanceWithWindowSize':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:54: multiple definition of `BroccoliCreateInstanceWithWindowSize'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:54: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliDestroyInstance':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:58: multiple definition of `BroccoliDestroyInstance';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:58: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliNewBrotliFile':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:61: multiple definition of `BroccoliNewBrotliFile';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:61: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliConcatStream':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:68: multiple definition of `BroccoliConcatStream';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:68: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliConcatStreaming':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:90: multiple definition of `BroccoliConcatStreaming';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:90: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliConcatFinish':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:107: multiple definition of `BroccoliConcatFinish';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:107: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliConcatFinished':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:124: multiple definition of `BroccoliConcatFinished';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:124: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BrotliEncoderMaxCompressedSizeMulti':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:49: multiple definition of `BrotliEncoderMaxCompressedSizeMulti'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:49: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BrotliEncoderCompressMulti':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:95: multiple definition of `BrotliEncoderCompressMulti'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:95: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BrotliEncoderCreateWorkPool':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:241: multiple definition of `BrotliEncoderCreateWorkPool'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:241: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BrotliEncoderDestroyWorkPool':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:292: multiple definition of `BrotliEncoderDestroyWorkPool'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:292: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BrotliEncoderCompressWorkPool':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:310: multiple definition of `BrotliEncoderCompressWorkPool'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:310: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderCreateInstance':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:61: multiple definition of `BrotliDecoderCreateInstance'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:59: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderSetParameter':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:103: multiple definition of `BrotliDecoderSetParameter'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:101: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderDecompressPrealloc':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:110: multiple definition of `BrotliDecoderDecompressPrealloc'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:108: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderDecompressWithReturnInfo':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:132: multiple definition of `BrotliDecoderDecompressWithReturnInfo'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:130: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderDecompress':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:144: multiple definition of `BrotliDecoderDecompress'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:142: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderDecompressStream':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:216: multiple definition of `BrotliDecoderDecompressStream'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:214: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderDecompressStreaming':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:260: multiple definition of `BrotliDecoderDecompressStreaming'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:258: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderMallocU8':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:286: multiple definition of `BrotliDecoderMallocU8'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:284: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderFreeU8':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:295: multiple definition of `BrotliDecoderFreeU8'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:293: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderMallocUsize':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:304: multiple definition of `BrotliDecoderMallocUsize'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:302: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderFreeUsize':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:313: multiple definition of `BrotliDecoderFreeUsize'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:311: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderDestroyInstance':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:322: multiple definition of `BrotliDecoderDestroyInstance'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:320: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderHasMoreOutput':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:335: multiple definition of `BrotliDecoderHasMoreOutput'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:333: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderTakeOutput':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:340: multiple definition of `BrotliDecoderTakeOutput'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:338: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderIsUsed':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:347: multiple definition of `BrotliDecoderIsUsed'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:345: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderIsFinished':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:351: multiple definition of `BrotliDecoderIsFinished'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:349: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderGetErrorCode':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:355: multiple definition of `BrotliDecoderGetErrorCode'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:353: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderGetErrorString':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:360: multiple definition of `BrotliDecoderGetErrorString'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:358: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderErrorString':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:371: multiple definition of `BrotliDecoderErrorString'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:369: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderVersion':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:379: multiple definition of `BrotliDecoderVersion'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:377: first defined here
          collect2: error: ld returned 1 exit status
danielrh commented 2 months ago

Can you configure with no default features. Ffi requires one definition only. Perhaps we should disable ffi by default?

On Tue, Apr 9, 2024 at 1:54 PM Yuri Astrakhan @.***> wrote:

Cargo.toml

[dependencies]brotli3 = { version = "3", package = "brotli" }brotli4 = { version = "4", package = "brotli" }

src/main.rs

use std::io::Write as _; fn main() { brotli3::CompressorWriter::new(Vec::new(), 1024, 11, 22) .write_all(b"foo") .unwrap(); brotli4::CompressorWriter::new(Vec::new(), 1024, 11, 22) .write_all(b"foo") .unwrap();}

Error

Full paths were replaced with ...

error: linking with cc failed: exit status: 1 | = note: LC_ALL="C" PATH="..." VSLANG="1033" "cc" "-m64" "/tmp/rustcY05l9b/symbols.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.133juv20ssu9kx5.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.19h7r4ftiwvohtr6.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1jp147se0pjudyb9.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1mw1tzwdpxwe7gal.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1p5v78lurm2y1j8j.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1tkzryepvhwijd4t.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1ukf4wydapb94gtd.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1unl1ydiqzun1jf5.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1yt2ygkdy5cff2ah.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1yzo1zqqz0m1typd.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.21waacy63cw8jzh.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.2b25tgc7534isx4e.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.2c4ccwb0m8d5dkdb.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.2es25b3suaie8kyi.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.2nqeup0lm4txhksu.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.2omfb579ku67sx1r.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.2qt497k0a1qf8to7.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.35tj30t21tbglb8j.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.36r9llqj3hzzbitr.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.36x4f4p1oupq0waq.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3954sqj17vad0qwg.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3gg9d8lp8qb1eooy.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3ixd3cchxdfnywte.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3o6sc219lu89acjx.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3owev0dd3dbqwj0c.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3rimjp5wxl6g14u.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.3trqi574zyshws8k.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.40rmlrkv1t1lwaao.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.48qvpf3y1jd3qxvu.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4e6yhuj0de0ky1if.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4ejvbuy5ewfhl9a6.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4fyix76rpwp7b6tg.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4g0f3bw1ykr7vara.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4h417mi70vcfo6qc.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4ikcrhcivlt2bioh.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4jndbmquovo9x5oe.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4jsluazjzgp5nlf0.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4nu5rkzxyfwbbxtj.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4orcykm97828rn6t.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4ou04oykiq2pukmq.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4s24021dqwn620yn.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4tai1mwegmz2vxb.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.4tam7sxnqeoo0xgq.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.4ux245g7vbkrkmog.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4zdqm0kv81zu656v.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.51amt1iqu13qfyz0.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.53ve2f03c4oh7jbb.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.5ckt4kofyyw71xik.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.5e8lrpu3hcqgpx7w.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.fap3yc2f4jqodl3.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.i7tdbwg4h76mxjp.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.tq78jf6ov4fabhv.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.wfy9j5khq7pkm02.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.wqguzcmzkyfmrmc.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.x69949c9wlx3nlj.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.yb9pcwn4u1j5ot2.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.3vuuabm15e0wf9ad.rcgu.o" "-Wl,--as-needed" "-L" (.../target/debug/deps" "-L" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" (.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib" ".../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib" ".../target/debug/deps/libbrotli-82404c8524ef2312.rlib" ".../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib" ".../target/debug/deps/liballoc_stdlib-8babd639daafa6af.rlib" ".../target/debug/deps/liballoc_no_stdlib-5ff7ee24da185d85.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-6e3078511c661ac3.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-252c22ad03c975c9.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-d80cad399a4d0390.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-27491650d14ec48b.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-97d68acfa4555965.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-c70b304f6ac84900.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-d55f2ec1b1801f29.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-0b96f850bca44a32.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-ee200428a02d516d.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-53d84a0642c19f2b.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-217c01f7aaf0f8d4.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-2b97858586af9abb.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-cc333506f95be41d.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-690e7438295ce0c8.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-c9c6c96eccfdab53.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-cb895a9d9d73a7fa.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-433bd1aab5f6d647.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-5f8e0208f8278cbc.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-1088ecd7666b60f4.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" ".../target/debug/deps/mydemo-bd3cc94a77453027" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" = note: /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderCreateInstance': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:69: multiple definition ofBrotliEncoderCreateInstance';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:69: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderSetParameter': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:109: multiple definition ofBrotliEncoderSetParameter';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:109: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderDestroyInstance': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:118: multiple definition ofBrotliEncoderDestroyInstance';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:118: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderIsFinished': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:134: multiple definition ofBrotliEncoderIsFinished';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:134: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderHasMoreOutput': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:139: multiple definition ofBrotliEncoderHasMoreOutput';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:139: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderSetCustomDictionary': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:144: multiple definition ofBrotliEncoderSetCustomDictionary'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:144: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderTakeOutput': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:163: multiple definition ofBrotliEncoderTakeOutput';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:163: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderVersion': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:170: multiple definition ofBrotliEncoderVersion';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:170: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderMaxCompressedSize': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:174: multiple definition ofBrotliEncoderMaxCompressedSize';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:174: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderCompress': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:178: multiple definition ofBrotliEncoderCompress';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:178: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderCompressStreaming': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:243: multiple definition ofBrotliEncoderCompressStreaming';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:243: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderCompressStream': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:263: multiple definition ofBrotliEncoderCompressStream';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:263: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderMallocU8': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:339: multiple definition ofBrotliEncoderMallocU8';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:339: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderFreeU8': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:354: multiple definition ofBrotliEncoderFreeU8';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:354: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderMallocUsize': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:370: multiple definition ofBrotliEncoderMallocUsize';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:370: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function BrotliEncoderFreeUsize': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:384: multiple definition ofBrotliEncoderFreeUsize';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:384: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function CBrotliDecoderErrorString': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:144: multiple definition ofCBrotliDecoderErrorString';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:144: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function CBrotliDecoderHasMoreOutput': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:149: multiple definition ofCBrotliDecoderHasMoreOutput';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:149: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function CBrotliDecoderTakeOutput': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:156: multiple definition ofCBrotliDecoderTakeOutput';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:156: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function CBrotliDecoderIsUsed': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:164: multiple definition ofCBrotliDecoderIsUsed';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:164: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function CBrotliDecoderIsFinished': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:168: multiple definition ofCBrotliDecoderIsFinished';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:168: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function CBrotliDecoderGetErrorCode': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:174: multiple definition ofCBrotliDecoderGetErrorCode';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:174: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function CBrotliDecoderGetErrorString': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:180: multiple definition ofCBrotliDecoderGetErrorString';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:180: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function BroccoliCreateInstance': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:50: multiple definition ofBroccoliCreateInstance';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:50: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function BroccoliCreateInstanceWithWindowSize': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:54: multiple definition ofBroccoliCreateInstanceWithWindowSize'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:54: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function BroccoliDestroyInstance': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:58: multiple definition ofBroccoliDestroyInstance';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:58: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function BroccoliNewBrotliFile': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:61: multiple definition ofBroccoliNewBrotliFile';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:61: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function BroccoliConcatStream': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:68: multiple definition ofBroccoliConcatStream';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:68: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function BroccoliConcatStreaming': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:90: multiple definition ofBroccoliConcatStreaming';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:90: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function BroccoliConcatFinish': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:107: multiple definition ofBroccoliConcatFinish';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:107: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function BroccoliConcatFinished': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:124: multiple definition ofBroccoliConcatFinished';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:124: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function BrotliEncoderMaxCompressedSizeMulti': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:49: multiple definition ofBrotliEncoderMaxCompressedSizeMulti'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:49: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function BrotliEncoderCompressMulti': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:95: multiple definition ofBrotliEncoderCompressMulti'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:95: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function BrotliEncoderCreateWorkPool': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:241: multiple definition ofBrotliEncoderCreateWorkPool'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:241: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function BrotliEncoderDestroyWorkPool': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:292: multiple definition ofBrotliEncoderDestroyWorkPool'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:292: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function BrotliEncoderCompressWorkPool': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:310: multiple definition ofBrotliEncoderCompressWorkPool'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:310: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderCreateInstance': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:61: multiple definition ofBrotliDecoderCreateInstance'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:59: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderSetParameter': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:103: multiple definition ofBrotliDecoderSetParameter'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:101: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderDecompressPrealloc': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:110: multiple definition ofBrotliDecoderDecompressPrealloc'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:108: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderDecompressWithReturnInfo': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:132: multiple definition ofBrotliDecoderDecompressWithReturnInfo'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:130: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderDecompress': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:144: multiple definition ofBrotliDecoderDecompress'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:142: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderDecompressStream': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:216: multiple definition ofBrotliDecoderDecompressStream'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:214: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderDecompressStreaming': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:260: multiple definition ofBrotliDecoderDecompressStreaming'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:258: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderMallocU8': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:286: multiple definition ofBrotliDecoderMallocU8'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:284: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderFreeU8': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:295: multiple definition ofBrotliDecoderFreeU8'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:293: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderMallocUsize': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:304: multiple definition ofBrotliDecoderMallocUsize'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:302: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderFreeUsize': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:313: multiple definition ofBrotliDecoderFreeUsize'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:311: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderDestroyInstance': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:322: multiple definition ofBrotliDecoderDestroyInstance'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:320: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderHasMoreOutput': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:335: multiple definition ofBrotliDecoderHasMoreOutput'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:333: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderTakeOutput': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:340: multiple definition ofBrotliDecoderTakeOutput'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:338: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderIsUsed': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:347: multiple definition ofBrotliDecoderIsUsed'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:345: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderIsFinished': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:351: multiple definition ofBrotliDecoderIsFinished'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:349: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderGetErrorCode': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:355: multiple definition ofBrotliDecoderGetErrorCode'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:353: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderGetErrorString': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:360: multiple definition ofBrotliDecoderGetErrorString'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:358: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderErrorString': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:371: multiple definition ofBrotliDecoderErrorString'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:369: first defined here /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function BrotliDecoderVersion': .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:379: multiple definition ofBrotliDecoderVersion'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:377: first defined here collect2: error: ld returned 1 exit status

— Reply to this email directly, view it on GitHub https://github.com/dropbox/rust-brotli/issues/179, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAALRELVLAAU4FEPORIZJCTY4RIOTAVCNFSM6AAAAABF7IOQTWVHI2DSMVQWIX3LMV43ASLTON2WKOZSGIZTIMRXHE2TQOI . You are receiving this because you are subscribed to this thread.Message ID: @.***>

nyurik commented 2 months ago

If ffi is not needed for "typical" operations, then yes, I think we should not require it by default. The problem is that now there might be a lot of projects that simply used the default without realizing they did not needed it, and the downstream users end up with conflicts. The bigger issue is that removing ffi from the default feature is also a breaking change... Luckly v4 hasn't been out for long, so perhaps simply releasing v5 without it is a good way forward

nyurik commented 2 months ago

P.S. Note that in many cases the end user is not even aware of which brotli version is being used because they are not using it directly. For example, actix-http uses v3, and async-compression uses v4 - so if used together, they would fail

danielrh commented 2 months ago

good points here. Pushed a new release that turns it off by default. End-projects can still use it if necessary.