Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Readme instructions for building on Windows fail #41

Closed
nokola opened this issue Mar 13, 2020 · 5 comments
Closed

Readme instructions for building on Windows fail #41

nokola opened this issue Mar 13, 2020 · 5 comments

Comments

@nokola
Copy link
Contributor

nokola commented Mar 13, 2020

TLDR: x86_64-pc-windows-gnu target is broken on Windows, however x86_64-pc-windows-msvc runs just fine.
Side note: awesome library! Love the one-step build for Android, Windows, WASM. Just what I was looking for my experiments :)

I propose update the readme for building on windows to this working line:

cargo run --example quad --target x86_64-pc-windows-msvc

For information:
There are several issues related to general linking with MinGW and C code, see related: rust-lang/rust#47048

This is the error message x86_64-pc-windows-gnu

D:\Repos\GitHub\miniquad>cargo run --example quad --target x86_64-pc-windows-gnu
   Compiling miniquad v0.2.50 (D:\Repos\GitHub\miniquad)
error: linking with `gcc` failed: exit code: 1
  |
  = note: "gcc" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-nostdlib" "-m64" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\crt2.o" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsbegin.o" "-L" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.1fh8zj8qzb1714it.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.1n1m4m3wrttllgrt.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.1swjfh8s7gn545mz.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.1xb7pqy0ln9ohyq2.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.1zufwc1tdnoonxzi.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.21532v8wbbeb1xkc.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.28y2q88fkvsg9kt1.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.2h175il6s90rg4v.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.2hx3i6tthqq0i472.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.2qyi8iv9cl8osyf.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.2rc138uja2z3ujnt.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.2wqy0kjo2k65ifni.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.2y11uvjvnesyo8i3.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.38kl7oetbr298l08.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.3asusp104vlv5w6g.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.3e90j05v1yncsco6.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.3k2zhrpoyrt1a867.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.3rpo1g9sw87hn2x0.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.3tgyvcaoxpjxoefn.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.3u4s4whndh130fhm.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.3wwg8izbf7vi7pt7.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.3ylp8n3wg90gq1xk.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.3yq71mnv6zpt2fjj.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.413e3ttk6koxhzb7.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.42oh3otdki7ico6x.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.43vz4a4yaqeyb8u1.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.46x0875xbpkbf8p0.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.4dvzv69ils53qnj8.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.4jmxir2xccjuoz3w.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.4wvze19b17j7zwxe.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.5agofs60bac20z3m.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.5fldr32p5ghq2kbr.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.9lw7qim3ydrl3r2.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.avz2fhlqw3ebesa.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.h96cuxpvwrumsp6.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.itlozx8yg7216ci.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.m9b9iawaaqsvbw5.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.rjut68nbxrgo46f.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.v5azipzshl7x394.rcgu.o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.yz0koqind0o4vkd.rcgu.o" "-o" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.exe" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\examples\\quad-32114cc659a6a1dd.m40rqsv3dy8d79v.rcgu.o" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\deps" "-L" "D:\\Repos\\GitHub\\miniquad\\target\\debug\\deps" "-L" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\build\\sapp-windows-78721a68f23e691c\\out" "-L" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-Wl,-Bstatic" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\deps\\libminiquad-ab3e7ab2a97f47db.rlib" "D:\\Repos\\GitHub\\miniquad\\target\\x86_64-pc-windows-gnu\\debug\\deps\\libsapp_windows-416e8de07a6c65dc.rlib" "-Wl,--start-group" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libstd-2709d4b440f1e31a.rlib" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libpanic_unwind-a9004ff0947ef669.rlib" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libhashbrown-51ba26adca1c882c.rlib" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_alloc-845f51604911fcc4.rlib" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace-de041ab5ae3894b3.rlib" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace_sys-583b927240902ae3.rlib" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_demangle-dc3974e5e5ee3f1e.rlib" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libunwind-93e1dea24f969698.rlib" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcfg_if-59c69470ac86444e.rlib" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liblibc-5fe3f715aad021c1.rlib" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liballoc-289552190fa6ddd0.rlib" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_core-663fc4811d41d373.rlib" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcore-985f2d98a138c88e.rlib" "-Wl,--end-group" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcompiler_builtins-8d584b80572e52da.rlib" "-Wl,-Bdynamic" "-lgdi32" "-lole32" "-lshell32" "-ladvapi32" "-lws2_32" "-luserenv" "-Wl,-Bstatic" "-lgcc_eh" "-lpthread" "-Wl,-Bdynamic" "-lmingwex" "-lmingw32" "-lgcc" "-lmsvcrt" "-lmsvcrt" "-luser32" "-lkernel32" "C:\\Users\\nikol\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsend.o"
  = note: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\nikol\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-gnu\lib\crt2.o:crtexe.c:(.text+0x7d): undefined reference to `_encode_pointer'
          C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\nikol\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-gnu\lib\crt2.o:crtexe.c:(.rdata$.refptr.__onexitbegin[.refptr.__onexitbegin]+0x0): undefined reference to `__onexitbegin'
          C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\nikol\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-gnu\lib\crt2.o:crtexe.c:(.rdata$.refptr.__onexitend[.refptr.__onexitend]+0x0): undefined reference 
to `__onexitend'
          collect2.exe: error: ld returned 1 exit status


error: aborting due to previous error

error: could not compile `miniquad`.

To learn more, run the command again with --verbose.
@not-fl3
Copy link
Owner

not-fl3 commented Mar 13, 2020

Hi! Thanks for the report and glad that miniquad works for you!

The problem is definitely worse mention, do you have any good link to add to README?

I am personally doing the following workaround on my archlinux machine for x86_64-pc-window-gnu target, however, it works without any hacks on github-CI and on my windows 8 pc

cp /usr/x86_64-w64-mingw32/lib/dllcrt2.o  ~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/dllcrt2.o
cp /usr/x86_64-w64-mingw32/lib/crt2.o  ~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/crt2.o

@nokola
Copy link
Contributor Author

nokola commented Mar 13, 2020

I don't have a link, however this command works fine on Windows 10 without any hacks:

cargo run --example quad --target x86_64-pc-windows-msvc

I just have VS 2019 installed. When I run the above command, everything builds and works great.

@nokola
Copy link
Contributor Author

nokola commented Mar 13, 2020

I propose update the readme with the above command for -msvc target on Windows and keep the Linux ones as-is - what do you think?

@not-fl3
Copy link
Owner

not-fl3 commented Mar 13, 2020

oh, I see, msvc target is never mentioned in the readme at all!

An attempt to fix it: 4c7bfb5

@nokola
Copy link
Contributor Author

nokola commented Mar 13, 2020

Looks good! :)

@nokola nokola closed this as completed Mar 13, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants