I'm trying to build a UEFI binary in stable Rust, so I don't use the x86_64-unknown-uefi
target as it requires the Nightly toolchain. To do so, I created .cargo/config.toml
:
[build]
target = "x86_64-pc-windows-gnu"
[target.x86_64-pc-windows-gnu]
rustflags = [
"-C", "link-args=/nologo /nxcompat /nodefaultlib /entry:efi_main /subsystem:efi_application",
"-C", "code-model=large",
"-C", "prefer-dynamic=n",
"-C", "no-redzone=y",
"-C", "panic=abort",
"-C", "linker=lld-link",
]
Building succeeds on my local machine but fails on GitHub Actions (log). The x86_64-w64-mingw32-ld
is still used even if I specify lld-link
as a linker.
How do I force cargo
to use lld-link
?
Have you tried adding
linker = "lld-link"
under the[target.x86_64-pc-windows-gnu]
table? Alternatively, tryCARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER="lld-link" cargo build
. This should force its use throughout the dependency chain.