64Bit Windows
How-to compile amd64 code with Code::Blocks
(by Tjaalie)
Requirements:
- Code::Bocks (just get a nightly build)
- Windows SDK ([1])
Step1) Make sure you have a nightly build because I don’t think that RC2 supports all the needed functionality to setup the compiler.
Step2) Install the Windows SDK, you can deselect all the .net stuff because we won’t be needing it.
- tip If you deselect the documentation parts you reduce the download size to under 100mb.
Step3) Start Code::Blocks and go to ‘Settings->Compiler and Debugger settings’, then select ‘Microsoft Visual C++ 2005’ from the dropdown box and click the copy button. Now choose a name I used ‘Windows SDK x64’ but you can name it whatever you like.
Step4) Now with ‘Windows SDK x64’ as the selected compiler go to the ‘Toolchain executables’ tab and EMPTY the directory text box. Then click the ‘Additional Paths’ tab inside the ‘Toolchain executables’ tab. Remove the directory that goes to your Visual C++ 2005 install dir NOT the debug one and add the following directory’s:
- C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin\x64
- C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\Bin\x64
Step5) Now go to the ‘Search Directories’ tab and remove all items under the ‘Compiler’, ‘Linker’ and ‘Resource compiler’ tabs. And then add the following,
Compiler:
- C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\INCLUDE
- C:\Program Files\Microsoft SDKs\Windows\v6.0\Include
Linker:
- C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\LIB\x64
- C:\Program Files\Microsoft SDKs\Windows\v6.0\Lib\x64
Resource Compiler:
- None
Step6) Create a new project (console project) and select our new ‘Windows SDK x64’ compiler as the compiler to use. Now in the generated code add the following line:
- cout << “sizeof(void*) = ” << sizeof(void*) << ";" << endl;
Hit the compile button and off we go. When we execute the program it appears to have a 8byte long address (64 bits).
Remarks) When you create a gui application Code::Blocks starts yelling at you about the PSDK, in fact the Windows SDK is the PSDK for Vista so you don’t need it, so you need to fill in a bogus path when creating the app (e.g. ‘c:\’) and then later remove the entries to the PSDK in ‘Build Options…->Search Directories’. A new template would be cool but that’s something for another time.