www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Dub or Dmd trying to use some funny path to find linker.exe

reply WhatMeWorry <kheaser gmail.com> writes:
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.
Jun 10
parent Mike Wey <mike-wey example.com> writes:
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
Jun 10