DMD under 64-bit Windows 7 HOWTO

Gor Gyolchanyan gor.f.gyolchanyan at gmail.com
Wed Dec 19 00:59:23 PST 2012


I'd love to have separate sections in sc.ini
This howto really needs some improvement.



On Wed, Dec 19, 2012 at 11:54 AM, Rainer Schuetze <r.sagitario at gmx.de>wrote:

>
>
> On 18.12.2012 14:32, Gor Gyolchanyan wrote:
>
>> Good day, fellow D developers.
>> After spending much time figuring out how to make DMD
>> work fluently under 64-bit Windows 7 I've realized that this is not a
>> trivial task and lots of people might have trouble with this, so I've
>> decided to post my solution, that might save people a lot of time.
>> As we know, there are compatibility problems with 32-bit DMD binaries,
>> because they are compiled using DMC back-end, which can only produce OMF
>> binaries, so in order to avoid problems with linking against externally
>> compiled libraries, it's much easier to stick to 64-bit binaries, so
>> that DMD will use the Visual Studio linker to produce compatible COFF
>> binaries. Another problem is that 32-bit DMD binaries are linked against
>> obsolete 32-bit WinAPI libraries, which lack some very important
>> functions, while the 64-bit binaries are required to link with the
>> 64-bit libraries, supplied by the the Windows SDK.
>>
>> And here's how this could be arranged:
>>
>> 1. Prepare your development folder.
>> 1.1. Create a folder with no spaces in its full path.
>> 1.2. Store its full path in the '%DEV_DIR_ROOT%' environment variable.
>> 2. Get the Windows SDK.
>> 2.1. Download the Windows SDK.
>> 2.1.1. Navigate to
>> 'http://msdn.microsoft.com/en-**US/windows//bb980924.aspx<http://msdn.microsoft.com/en-US/windows//bb980924.aspx>'
>> in a web browser.
>> 2.1.2. Under section 2 (number '2' in a green circle) click on the bold
>> blue 'Install Now' link.
>> 2.1.3. In the opened window click in the blue 'Download' button at the
>> bottom of the page.
>> 2.1.4. Make sure, that the Windows SDK installer ('winsdk_web.exe') is
>> downloaded.
>> 2.2. Install the downloaded Windows SDK.
>> 2.2.1. Navigate to the folder, where the Windows SDK installer was
>> downloaded in a file browser.
>> 2.2.2. Double-click on the installer and agree to security warnings to
>> launch it.
>> 2.2.3. Click next, read and agree to the license until you reach the
>> 'Install Locations' screen.
>> 2..2.4. Store the path under 'Destination Folder for Tools' in the
>>
>> '%DEV_DIR_MSWINSDK%' (e.g. 'C:\Program Files (x86)\Microsoft
>> SDKs\Windows\v7.0A') and click 'Next >'.
>> 2.3.3. On the 'Installation Options' uncheck everything except 'x64
>> Libraries' and 'Visual C++ Compilers' and click 'Next >'.
>> 2.3.4. Confirm that everything is correct and click 'Next >' to start
>> installing.
>> 2.3.5. Make sure, tata the installation is completed succesfully.
>> 2.3.6. Store the path to the installed Visual Studio C++ compiler into
>> the '%DEV_DIR_MSVC%' environment variable (e.g. 'C:\Program Files
>> (x86)\Microsoft Visual Studio 10.0\VC').
>> 3. Get the DMD.
>> 3.1. Navigate to 'http://ftp.digitalmars.com/**dmd2beta.zip<http://ftp.digitalmars.com/dmd2beta.zip>
>> <http://ftp.digitalmars.com/**dmd2beta..zip<http://ftp.digitalmars.com/dmd2beta..zip>>'
>> in a web browser.
>>
>> 3.2. Make sure, that the DMD compiler archive ('dmd2beta.zip') is
>> downloaded.
>> 3.3. Unzip the archive into '%DEV_DIR_ROOT%\Tools', so that the 'dmd2'
>> folder in the archive will end up in '%DEV_DIR_ROOT%\Tools\dmd2'.
>> 3.4. Adapt the compiler configuration to the development environment.
>> 3.4.1. Open the file '%DEV_DIR_ROOT%\Tools\dmd2\**windows\bin\sc.ini' in
>> a
>> text editor.
>> 3.4.2. Replace the line with 'LIB=' with the line
>> 'LIB="%DEV_DIR_WINSDK%\Lib\**x64";"%DEV_DIR_MSVC%\lib\**
>> amd64";"%@P%\..\lib"'.
>> 3.4.3. Add '-m64 -L/NOLOGO' to  the 'DFLAGS' variable.
>> 3.4.4. Remove the lines with 'VCINSTALLDIR=' and 'WindowsSdkDir='.
>> 3.4.5. Replace the like with 'LINKCMD64=' with the line
>> 'LINKCMD64="%DEV_DIR_MSVC%\**bin\amd64\link.exe"'
>> Now "%DEV_DIR_ROOT%\Tools\dmd2\**windows\bin\dmd.exe" will always use the
>> Windows SDK libraries and Visual C++ compiler to produce 64-bit COFF
>> binaries.
>>
>> I hope I was helpful, because when I started to set up a development
>> environment under 64-bit Windows 7, I went through a lot of problems to
>> get here and I'd love to have this HOWTO at that time.
>>
>
> Thanks for doing this. A few notes:
>
> - I don't think it is the best idea to have two copies of the compiler to
> be able to compile for 32-bit and 64-bit targets. That's why I have
> suggested 2 different environment blocks in sc.ini, but the pull request
> has not been merged yet: https://github.com/D-**
> Programming-Language/dmd/pull/**1220<https://github.com/D-Programming-Language/dmd/pull/1220>
>
> - With removing VCINSTALLDIR and WindowsSdkDir from sc.ini, you are
> disabling some magic in the linker invocation. I think this is good, the
> resulting settings should be in sc.ini. Please note that the environment
> variables can also be set in the shell environment already (e.g. when using
> the link to starting cmd.exe created by the SDK installer), setting them to
> blank might be a good idea.
>
> - Most people will already have some other version of the linker and the
> SDK installed, e.g. as part of Visual Studio or VC++ Express. I think these
> should be supported aswell. I recently started creating a list of common
> installations but got distracted somehow.
>
> - The Windows 8 SDK uses some other folder hierarchy.
>
> - When building with debug information, the linker needs to load some DLLs
> to generate the PDB file. I had to modify the PATH environment variable in
> sc.ini as well to not get an error, i.e. 'PATH=%DEV_DIR_MSVC%\bin\**
> amd64;%PATH%'
>
>
>
>> --
>> Bye,
>> Gor Gyolchanyan.
>>
>


-- 
Bye,
Gor Gyolchanyan.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20121219/f82ba7e6/attachment-0001.html>


More information about the Digitalmars-d mailing list