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.
Compiling amd64 code using Microsoft Visual C++ 2010
The following instructions will allow you to compile 64-bit code using Microsoft's VC 2010 compiler (with the Windows SDK).
Requirements:
- Code::Bocks (at least as of 2012-07-23 the nightly build worked) [/index.php/board,20.0.html]
-Microsoft Visual C++ 2010 express (or better) [2]
-Microsoft Windows SDK v7.1 (earlier versions might not work, later version will probably work but directories will change) [3]
Step 1) Install Visual Studio 2010.
Step 2) Install Windwos SDK.
Step 3) Install Code::Blocks following instructions listed in nightly build forum.
Note: Prior to setting up Code::Blocks for 64-Bit compiling, you may need to set the MSbuild environment to x64. This can be done my running the command:
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64
Step 5) Run the new installation for the nightly build of Code::BLocks. It should auto-detect your installed compilers, including the recently installed Visual C++ 2010.
Step 6) Once Code::Blocks open the 'Global Compiler Settings' (Settings->Compiler...). Select 'Microsoft Visual C++ 2010'.
Now under the 'Toolchain executables' Tab change the Compiler's installation directory to:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
Note: if you installed VC to a different directory this path will change. The important part is that you change the path to look in the '.\bin\amd64' directory.
While still in the 'Toolchain...' tab, click on 'Additional Paths'. Add the following:
C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\x64
C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE
Next you need to add the x64 includes and lib file.
Under the 'Search Directories' tab add the following to the Compiler search path:
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include
Note: the Windows SDK directory should be listed first
Now add the following to the Linker search path (in this order):
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64
C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64
C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib
You should now be able to compile x64 code using VC 2010 (express).
To test the compiler, build the following program:
main.cpp
<
#include <SDKDDKVer.h>
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <cstdlib>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "sizeof(void*) = " << sizeof(void*) << ";" << endl;
return 0;
}
If everything works correctly it should output: sizeof(void*) = 8;