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.
MSVC15directly inC:\. So I had for example old binaries of 16-bit VC compiler inC:\MSVC15\BIN.C:\PKCS-11directory. The fileC:\PKCS-11\pkcs11.hlike all dependent files will be in the same directoryC:\PKCS-11C:\nasm-2.10.05directory. So thatnasm.execould be found inC:\nasm-2.10.05.gzip-1.3.12-1-bin.ziptoC:\gzip-1.3.12-1-bin. So thatC:\gzip-1.3.12-1-bin\bincontainsgzip.exe.C:\WinDDK\7600.16385.1before.C:\truecrypt-masterdirectory. So thatCrypto.vcprojcan be found inC:\truecrypt-master\Cryptodirectory.Because I don’t like to modify the global environment variables I created the following batch file:
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-masterand compiled it. It wasCrypto.vcproj(fromC:\truecrypt-master\Crypto),Boot.vcproj(fromC:\truecrypt-master\Boot\Windows),Driver.vcproj(fromC:\truecrypt-master\Driver),Format.vcproj(fromC:\truecrypt-master\Format) andMount.vcproj(fromC:\truecrypt-master\Mount).I could successfully compile all the projects. The only small problems were during building of
Format.vcprojandMount.sln. The filesFormat.tlbandMount.tlbexists in subdirectories. So I fixed the lines where TLB files are referenced inC:\truecrypt-master\Format\Format.rcandC:\truecrypt-master\Mount\Mount.rctoand
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.cmdthe lineto
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 useTrueCrypt.slnfromC:\TrueCrypt7.1ait’s not needed.UPDATED 2: After you compiled the project you will see in
C:\TrueCrypt7.1a\Release\Setup Filesor inC:\truecrypt-master\Release\Setup Filesthe filesThe file
TrueCrypt Setup.exeexists only inC:\TrueCrypt7.1a(downloaded from the link http://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(fromC:\TrueCrypt7.1a\Release\Setup Filesdirectory for example). You will get warningbut the
TrueCrypt.exewill do work and you will see