Dub or Dmd trying to use some funny path to find linker.exe

Mike Wey via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Jun 10 13:06:28 PDT 2017


On 06/10/2017 07:04 PM, WhatMeWorry wrote:
> 
> Dub or Dmd dies when it can't find the linker.  Like so:
> 
> C:\Users\kheaser\Git\Delivery\projects\00_01_print_ogl_ver>dub run 
> --arch=x86_64 --force
> Performing "debug" build using dmd for x86_64.
> derelict-util 2.0.6: building configuration "library"...
> derelict-al 1.0.3: building configuration "library"...
> derelict-assimp3 1.3.0: building configuration "library"...
> derelict-fi 2.0.3: building configuration "library"...
> derelict-fmod 2.0.4: building configuration "library"...
> derelict-ft 1.1.3: building configuration "library"...
> derelict-gl3 1.0.23: building configuration "library"...
> derelict-glfw3 3.1.3: building configuration "derelict-glfw3-dynamic"...
> 00_01_print_ogl_ver ~master: building configuration "application"...
> Linking...
> Error: can't run 
> 'C:\Users\Administrator\Desktop\VC\\bin\x86_amd64\link.exe', check PATH
> dmd failed with exit code -1.
> 
> C:\Users\kheaser\OneDrive for 
> Business\GitHub\Delivery\projects\00_01_print_ogl_ver>where link.exe
> C:\D\dmd2\windows\bin\link.exe
> 
> First off, I have no idea why dub (or dmd) is trying to use the path 
> C:\Users\Administrator\Desktop\VC\\bin\x86_amd64\ to find link.exe?
> 
> I did the where command link.exe to show that the linker is in my PATH 
> at C:\D\dmd2\windows\bin\.
> 
> So can I specify the linker path explicitly and if so, how is that done?
> 
> Sorry if this is a stupid question, but I've looked at the documentation 
> all morning and not finding anything.  Thanks.

You are building a 64bit executable, and in that case the linker shiped 
with dmd isn't used, as it only handles 32bit (OMF). dmd instead relies 
on the microsoft linker. Judging from the error the path to the Windows 
SDK / linker is not set correctly in dmd's sc.ini.

-- 
Mike Wey


More information about the Digitalmars-d-learn mailing list