ΠΠΎΠΏΡΡΠΊΠ° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Hello, world!
Π½Π° Fedora ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ
error: linking with `x86_64-w64-mingw32-gcc` failed: exit code: 1
|
= note: "x86_64-w64-mingw32-gcc" "-Wl,--enable-long-section-names" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-nostdlib" "-m64" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/crt2.o" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/rsbegin.o" "-L" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver0.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver1.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver10.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver11.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver12.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver13.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver14.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver15.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver2.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver3.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver4.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver5.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver6.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver7.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver8.rust-cgu.o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.printserver9.rust-cgu.o" "-o" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.exe" "/app/target/x86_64-pc-windows-gnu/debug/deps/printserver-4c9c9553ae081d85.crate.allocator.rust-cgu.o" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "/app/target/x86_64-pc-windows-gnu/debug/deps" "-L" "/app/target/debug/deps" "-L" "/home/rust/.cargo/git/checkouts/winapi-rs-a54263a8eb5d0916/70e1da8/x86_64/lib" "-L" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib" "-Wl,-Bstatic" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/libstd-60d4a252bdda9250.rlib" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/liballoc_system-a05404e5e059417a.rlib" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/librand-81cbf6f1d5a19206.rlib" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/libpanic_unwind-0b63e20460046692.rlib" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/liballoc-f824a78e715239af.rlib" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/libstd_unicode-2abaea46f194a6e1.rlib" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/libunwind-7daa32005d584d8a.rlib" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/liblibc-49ff25caaa6e945f.rlib" "/app/target/x86_64-pc-windows-gnu/debug/deps/libwinapi-e1e9b0b9a817ecee.rlib" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/libcore-f2bd2d524c6ace24.rlib" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/libcompiler_builtins-c6139fac5e899293.rlib" "-Wl,-Bdynamic" "-l" "advapi32" "-l" "ws2_32" "-l" "userenv" "-l" "shell32" "-Wl,-Bstatic" "-l" "gcc_eh" "-l" "pthread" "-Wl,-Bdynamic" "-l" "winspool" "-l" "user32" "-l" "kernel32" "-l" "msimg32" "-l" "opengl32" "-l" "gdi32" "-lmingwex" "-lmingw32" "-lgcc" "-lmsvcrt" "-luser32" "-lkernel32" "/home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/rsend.o"
= note: /usr/lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/bin/ld: cannot find -lpthread
collect2: error: ld returned 1 exit status
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΡΡ Π² ubuntu ΡΠ°Π²Π΅Π½ /usr/x86_64-w64-mingw32/lib/libpthread.a
Π° Π² Fedora - /usr/x86_64-w64-mingw32/sys-root/mingw/lib/libpthread.a
Ρ
ΠΎΡΡ Π·Π°ΠΏΡΡΠΊ RUSTFLAGS="-L /usr/x86_64-w64-mingw32/sys-root/mingw/lib" cargo build
(Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π²ΡΠ΅ ΠΏΠΎΠ΄ΠΏΡΡΠΈ) ΡΠΎΠΆΠ΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³
ΠΠΎΡ ΠΌΠΎΡ ΡΠ΅ΡΡΠΎΠ²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°:
FROM ubuntu
RUN apt-get update && apt-get install -y \
vim \
curl \
gcc \
gcc-mingw-w64-x86-64 \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
WORKDIR /app
ENV HOME=/home/rust
RUN groupadd -r -g 1000 rust \
&& useradd --no-log-init -r -g rust -u 1000 rust \
&& mkdir -p $HOME \
&& chown rust:rust $WORKDIR $HOME
USER rust
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
ENV PATH="$HOME/.cargo/bin:$PATH"
RUN rustup target add x86_64-pc-windows-gnu
RUN echo >>~/.cargo/config '[build]\ntarget = "x86_64-pc-windows-gnu"\n\n[target.x86_64-pc-windows-gnu]\nlinker = "x86_64-w64-mingw32-gcc"\nar = "x86_64-w64-mingw32-gcc-ar"'
FROM fedora
RUN dnf install -y \
vim \
gcc \
mingw64-gcc \
&& dnf clean all
WORKDIR /app
ENV HOME=/home/rust
RUN groupadd -r -g 1000 rust \
&& useradd --no-log-init -r -g rust -u 1000 rust \
&& mkdir -p $HOME \
&& chown rust:rust $WORKDIR $HOME
USER rust
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
ENV PATH="$HOME/.cargo/bin:$PATH"
RUN rustup target add x86_64-pc-windows-gnu
RUN echo -e >>~/.cargo/config '[build]\ntarget = "x86_64-pc-windows-gnu"\n\n[target.x86_64-pc-windows-gnu]\nlinker = "x86_64-w64-mingw32-gcc"\nar = "x86_64-w64-mingw32-gcc-ar"'
mkdir test
cd test
clippaste >Dockerfile # put above snippet in Dockerfile
docker build -t rust-test .
docker run --rm -it rust-test bash
USER=a cargo init --bin
cargo build # works with ubuntu but fails with fedora
ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ Ρ ΠΏΠΎΠ΄Π°Π» ΡΡΠΎ Π·Π΄Π΅ΡΡ https://github.com/retep998/winapi-rs/issues/527, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄ΡΠΌΠ°Π», ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΡΡΠΈΠΊ winapi.
Π― ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΡΡΠΈ ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ https://github.com/rust-lang/rust/issues/32859 https://github.com/rust-lang/rust/issues/33465 https://github.com/rust-lang / rust / issues / 44787, Π½ΠΎ, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΠΎΠ½ΠΈ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ.
ΠΡ ΠΏΡΡΠ°Π»ΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ "mingw64-winpthreads-static", ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ. ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ.
/ usr / bin / x86_64-w64-mingw32-ld: Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ Π½Π°ΠΉΡΠΈ -lboost_program_options-mt
collect2: ΠΎΡΠΈΠ±ΠΊΠ°: ld Π²Π΅ΡΠ½ΡΠ» 1 ΡΡΠ°ΡΡΡ Π²ΡΡ
ΠΎΠ΄Π°
ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅ ΠΌΠ½Π΅ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ ..
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡ ΠΏΡΡΠ°Π»ΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ "mingw64-winpthreads-static", ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ.