rustbitflagsrust-no-std

/usr/bin/link: missing operand after ‘\377\376"’ when compiling bitflags


Following Phillip Opperman's Blog OS, I have been trying to use the bitflags and x86_64 rust crates. The latest x86_64 crate release has bitflags 1.0.4 as a dependency which makes sense. However, I have been completely unable to compile bitflags 1.2.1 on any target with several compilers (tried nightly for every release since June 2019, stable)

Every time I try, Cargo throws this error:

error: linking with `link.exe` failed: exit code: 1        
  |  
  = note: "link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.10igbbtzvlu2gjzc.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.178969nxbu3nxuky.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.17xe0ilsif9upn0h.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.18t5fqmvmcakbqcu.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.1tks4n3zsagbiucs.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.1x00x4dovi546kkl.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.20khrbf3w08gf7gw.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.2300zqtgv1madedz.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.242aa09d34jshbc9.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.24klb7r0emqymm3t.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.27en69ffbhnktrj7.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.2bws5627knv64y1n.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.2e1o13g4bta7mxfq.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.2msccpkq1gofr2iq.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.2so84tb4ib2abjhy.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.2wrpuwxc6a2lpmw3.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.34jaofsecblmluop.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.3h9hs48cyaiaawqq.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.3i7788k802tubyhd.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.3jxyc8towsdfxyad.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.3ofhy3w7e48bfc7j.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.3qnhz4aum3qd07zo.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.3y43d86jozz1eymi.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.3ycwew3k0fan7v08.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.40hi0t5daivy49tp.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.447ecvqx3zomb1b8.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.455qjh596c0k58u.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.4755rsha0yaachh.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.4c1izw4dwgrqtuxe.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.4ckqzzupgkkb0m3s.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.4e31qbizzcl2oip1.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.4l4pis8wno6tow0u.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.4p1k3k8ws4isf3lw.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.4tdt9b2iyabiwph8.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.519b3wup2l151966.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.54m1xq349ayksbun.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.57ectnnsg543kzfn.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.58dovvuhpiqcojaw.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.5a7xswmgibmgqieq.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.5du0pnnn1wob2l02.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.5gmrtuynfugoyo5w.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.dy9ewngypkxb53u.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.g92a319cgc2j7m4.rcgu.o"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.o22syf9m375w02v.rcgu.o" "
  OUT:C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.exe"
  "C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\build\\bitflags-10ba28bcd480cb56\\build_script_build-10ba28bcd480cb56.yhwnnfvr19au4rm.rcgu.o" "/OPT:REF,NOICF" "/DEBUG" "
  NATVIS:C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "
  NATVIS:C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "
  NATVIS:C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "
  NATVIS:C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libstd.natvis" "/LIBPATH:C:\\Users\\jlsat\\Desktop\\projects\\bitflags\\target\\debug\\deps" "
  LIBPATH:C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib"
  "C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-18c6858731fa3bc3.rlib"
  "C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-a66e087848bc7936.rlib"
  "C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libhashbrown-338ca20351402107.rlib"
  "C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_alloc-4f84af8e7d3388ab.rlib"
  "C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libbacktrace-a1aab3ed9b27c85d.rlib"
  "C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_demangle-7ec4d8ba283cadef.rlib"
  "C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-95d48056521518ae.rlib"
  "C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcfg_if-0da050bb8301bdcc.rlib"
  "C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-4fecd5ded0f89344.rlib"
  "C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-6c3a580df1907230.rlib"
  "C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_core-a7e28ad09d5bceb4.rlib"
  "C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-d611b18b12aad85e.rlib"
  "C:\\Users\\jlsat\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-72682309e5e16886.rlib" "advapi32.lib" "ws2_32.lib"
  "userenv.lib" "msvcrt.lib"
= note: /usr/bin/link: missing operand after ‘\377\376"’
          Try '/usr/bin/link --help' for more information.

(More outputs at bottom)

This, to me, is gibberish. Clearly, the linker is failing, but as far as I understand it, the bitflags crate has a custom build script (build.rs) that really only checks for compiler compatibility. Since the crate only works on rustc 1.2+ (something of the sort) it makes sense that it checks this. However, this also leaves me with no leads. What is the source of this issue? I can't see any point where the linker is being directly modified in a way that would cause such a mess.

cargo build --verbose output (same as before with this section appended):

Caused by:
  process didn't exit successfully:
`rustc --crate-name build_script_build build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C debuginfo=2 --cfg 'feature="default"' -C metadata=10ba28bcd480cb56 -C extra-filename=-10ba28bcd480cb56 --out-dir 'C:\Users\jlsat\Desktop\projects\bitflags\target\debug\build\bitflags-10ba28bcd480cb56' -C 'incremental=C:\Users\jlsat\Desktop\projects\bitflags\target\debug\incremental' -L 'dependency=C:\Users\jlsat\Desktop\projects\bitflags\target\debug\deps'` (exit code: 1)

Running this process separately output almost exactly the same thing, with no new information.

Edit: I was trying this on bash for windows, and my MSVC linker along with the rest of the suite was broken (windows doesn't like me). I believe this massive printout was caused because the terminal defaulted to the gnu linker, which didn't like that. After reinstalling the build tools and updating my toolchain and xbuild, everything worked fine. Thanks for those who tried to help!


Solution

  • I also meet this error. I fix it by installing Windows 10 SDK.

    Rustc need Windows 10 SDK. I found this in here:

    For Visual Studio, make sure to check the "C++ tools" and "Windows 10 SDK" option.