I'm trying to compile TrueCrypt. I am using the instructions from https://github.com/syglug/truecrypt.
I set the 3 environment variables (pkcs
,ddk
,MSVC16_ROOT
) and opened the project in msvc2008. This wasn't in the instructions but I needed NASM to be installed so I installed it and put NASM in the PATH. Now when I build I get the below. It juts ends even though the IDE has the cancel build selectable the compiler isn't doing anything and the system idles.
Crypto.lib does exist after this step
1>------ Build started: Project: Crypto, Configuration: Release Win32 ------
2>------ Build started: Project: Boot, Configuration: Release Win32 ------
3>------ Build started: Project: Driver, Configuration: Release Win32 ------
2>Performing Makefile project actions
3>Performing Makefile project actions
1>Performing Custom Build Step
3>------ Building truecrypt.sys: Release x86 ------
1>Aes_hw_cpu.asm
2>Microsoft (R) C/C++ Optimizing Compiler Version 8.00c
2>Copyright (c) Microsoft Corp 1984-1993. All rights reserved.
3>The syntax of the command is incorrect.
3>Project : error PRJ0002 : Error result 255 returned from 'C:\Windows\SysWow64\cmd.exe'.
3>Build log was saved at "file://c:\unzipped\tc\Driver\Release\BuildLog.htm"
3>Driver - 1 error(s), 0 warning(s)
1>Performing Custom Build Step
1>Aes_x86.asm
1>Compiling...
1>Whirlpool.c
1>Twofish.c
1>Sha2.c
1>Sha1.c
1>Serpent.c
1>Rmd160.c
1>Des.c
1>Cast.c
1>Blowfish.c
1>Aestab.c
1>Aeskey.c
1>Generating Code...
1>Creating library...
1>Build log was saved at "file://c:\unzipped\tc\Crypto\Release\BuildLog.htm"
1>Crypto - 0 error(s), 0 warning(s)
It just hangs. It isn't using any CPU the IDE doesn't seem to know it failed or stopped. When running again I get this
1>------ Build started: Project: Boot, Configuration: Release Win32 ------
2>------ Build started: Project: Driver, Configuration: Release Win32 ------
1>Performing Makefile project actions
2>Performing Makefile project actions
2>------ Building truecrypt.sys: Release x86 ------
1>Microsoft (R) C/C++ Optimizing Compiler Version 8.00c
1>Copyright (c) Microsoft Corp 1984-1993. All rights reserved.
2>The syntax of the command is incorrect.
I have msvc2012 installed so I tried it as well. I get the same problems
1>------ Build started: Project: Crypto, Configuration: Release Win32 ------
2>------ Build started: Project: Boot, Configuration: Release Win32 ------
3>------ Build started: Project: Driver, Configuration: Release Win32 ------
1> Performing Custom Build Tools
1> Aes_hw_cpu.asm
3> ------ Building truecrypt.sys: Release x86 ------
2> Microsoft (R) C/C++ Optimizing Compiler Version 8.00c
2> Copyright (c) Microsoft Corp 1984-1993. All rights reserved.
2>
3> The syntax of the command is incorrect.
3>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: The command "echo ------ Building truecrypt.sys: Release x86 ------
3>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: cmd.exe /c BuildDriver.cmd -build -release -x86 "C:\unzipped\tc\\Common" "C:\unzipped\tc\\Crypto" "C:\unzipped\tc\Driver\"
3>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: if errorlevel 1 exit %errorlevel%
3>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: echo.
3>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: echo ------ Building truecrypt.sys: Release x64 ------
3>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: BuildDriver.cmd -build -release -x64 "C:\unzipped\tc\\Common" "C:\unzipped\tc\\Crypto" "C:\unzipped\tc\Driver\"" exited with code 255.
1> Performing Custom Build Tools
1> Aes_x86.asm
1> Aeskey.c
1> Aestab.c
1> Blowfish.c
1> Cast.c
1> Des.c
1> Rmd160.c
1> Serpent.c
1> Sha1.c
1> Sha2.c
1> Twofish.c
1> Whirlpool.c
1> Generating Code...
1> Crypto.vcxproj -> C:\unzipped\tc\Crypto\Release\Crypto.lib
When I cancel/build again I get the below
1>------ Build started: Project: Boot, Configuration: Release Win32 ------
2>------ Build started: Project: Driver, Configuration: Release Win32 ------
2> ------ Building truecrypt.sys: Release x86 ------
2> The syntax of the command is incorrect.
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: The command "echo ------ Building truecrypt.sys: Release x86 ------
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: cmd.exe /c BuildDriver.cmd -build -release -x86 "C:\unzipped\tc\\Common" "C:\unzipped\tc\\Crypto" "C:\unzipped\tc\Driver\"
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: if errorlevel 1 exit %errorlevel%
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: echo.
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: echo ------ Building truecrypt.sys: Release x64 ------
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: BuildDriver.cmd -build -release -x64 "C:\unzipped\tc\\Common" "C:\unzipped\tc\\Crypto" "C:\unzipped\tc\Driver\"" exited with code 255.
1> Microsoft (R) C/C++ Optimizing Compiler Version 8.00c
1> Copyright (c) Microsoft Corp 1984-1993. All rights reserved.
1>
What's wrong here? How do I build TrueCrypt? I'm running Windows 7 64bits
I could successfully build all projects from https://github.com/syglug/truecrypt. I followed mostly the instructions from readme.txt. Because the instruction are not detailed enough I describe below all steps which I did. If you will have some additional questions to some steps I'll include additional details.
I used Visual Studio 2008 installed on Windows 7 X64. If needed I could reproduce the same with Visual Studio 2010 or 2012.
MSVC15
directly in C:\
. So I had for example old binaries of 16-bit VC compiler in C:\MSVC15\BIN
.C:\PKCS-11
directory. The file C:\PKCS-11\pkcs11.h
like all dependent files will be in the same directory C:\PKCS-11
C:\nasm-2.10.05
directory. So that nasm.exe
could be found in C:\nasm-2.10.05
.gzip-1.3.12-1-bin.zip
to C:\gzip-1.3.12-1-bin
. So that C:\gzip-1.3.12-1-bin\bin
contains gzip.exe
.C:\WinDDK\7600.16385.1
before.C:\truecrypt-master
directory. So that Crypto.vcproj
can be found in C:\truecrypt-master\Crypto
directory.Because I don't like to modify the global environment variables I created the following batch file:
SET MSVC16_ROOT=C:\MSVC15
SET PKCS11_INC=C:\PKCS-11
PATH=C:\nasm-2.10.05;C:\gzip-1.3.12-1-bin\bin;%PATH%
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"
In the last line of the batch file Visual Studio 2008 will be started (devenv.exe
). It inherits all environment variables set in CMD.EXE (the parent process which started Visual Studio 2008).
The solution file 'TrueCrypt.sln' described in the readme is not included in the sources found on github. So I opened every Project file which I found in subdirectories of C:\truecrypt-master
and compiled it. It was Crypto.vcproj
(from C:\truecrypt-master\Crypto
), Boot.vcproj
(from C:\truecrypt-master\Boot\Windows
), Driver.vcproj
(from C:\truecrypt-master\Driver
), Format.vcproj
(from C:\truecrypt-master\Format
) and Mount.vcproj
(from C:\truecrypt-master\Mount
).
I could successfully compile all the projects. The only small problems were during building of Format.vcproj
and Mount.sln
. The files Format.tlb
and Mount.tlb
exists in subdirectories. So I fixed the lines where TLB files are referenced in C:\truecrypt-master\Format\Format.rc
and C:\truecrypt-master\Mount\Mount.rc
to
IDR_FORMAT_TLB TYPELIB ".\\Format\\Format.tlb"
and
IDR_MOUNT_TLB TYPELIB ".\\Mount\\Mount.tlb"
I'll post later the corresponded fixes to https://github.com/syglug/truecrypt in form of Pull Request.
UPDATED: One have to change in the file BuildDriver.cmd
the line
set TC_BUILD_ARCH=x64 WNET
to
set TC_BUILD_ARCH=x64
to be able to build Driver.
Additionally one should build lines uses correct pathes like "$(SolutionDir)..\Crypto"
and "$(SolutionDir)..\Common"
(see nmake options in Visual Studio). If one use TrueCrypt.sln
from C:\TrueCrypt7.1a
it's not needed.
UPDATED 2: After you compiled the project you will see in C:\TrueCrypt7.1a\Release\Setup Files
or in C:\truecrypt-master\Release\Setup Files
the files
The file TrueCrypt Setup.exe
exists only in C:\TrueCrypt7.1a
(downloaded from the link www.truecrypt.org which you posted in the comment later). As I mentioned in the comment before you need configure Visual Studio 2008 to use Windows SDK 7 instead of default 6.0a to be able successfully to compile Setup project.
The drivers which will be compiled are not digitaly signed with Microsoft signature. So the drivers will be not trusted by Windows 7 by default. So to verify that the driver work you have to press F8 during boot of the computer and disable driver signature:
After that you will be able to execute TrueCrypt.exe
(from C:\TrueCrypt7.1a\Release\Setup Files
directory for example). You will get warning
but the TrueCrypt.exe
will do work and you will see