With the whole NSA thing people tried to re-build identically looking binaries to the ones which truecrypt.org provides, but didn't succeed. So some think they might be compiled with back-doors which are not in the source code. -> So how compile on the latest Ubuntu version (I'm using UbuntuGNOME but that shouldn't matter)? I tried some tutorials for previous Ubuntu versions but they seem not to work any-more? 

**edit:**

<https://madiba.encs.concordia.ca/~x_decarn/truecrypt-binaries-analysis/> 
Now you might think "ok, we don't need to build", but: To build he used closed-source software and there are proof-of-concepts where a compromised compiler still put backdoors into the binary:
1. source without backdoors
2. binary identically to the reference-binary
3. binary contains still backdoors

**edit2 (reply to post):**

When using `$ make -j 2 PKCS11_INC=$HOME/src/pkcs-11` I get:

```

...

/usr/include/wx-2.8/wx/dynarray.h:669:5: note: in expansion of macro ‘_WX_DEFINE_TYPEARRAY_PTR’
     _WX_DEFINE_TYPEARRAY_PTR(_wxArray##name, name, base, classdecl)
     ^
/usr/include/wx-2.8/wx/dynarray.h:655:5: note: in expansion of macro ‘WX_DEFINE_TYPEARRAY_WITH_DECL_PTR’
     WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, base, class WXDLLEXPORT)
     ^
/usr/include/wx-2.8/wx/dynarray.h:829:5: note: in expansion of macro ‘WX_DEFINE_EXPORTED_TYPEARRAY_PTR’
     WX_DEFINE_EXPORTED_TYPEARRAY_PTR(T, name, wxBaseArrayPtrVoid)
     ^
/usr/include/wx-2.8/wx/bookctrl.h:26:1: note: in expansion of macro ‘WX_DEFINE_EXPORTED_ARRAY_PTR’
 WX_DEFINE_EXPORTED_ARRAY_PTR(wxWindow *, wxArrayPages);
 ^
Linking truecrypt
/usr/bin/ld: /home/user/src/truecrypt-7.1a-source/Volume/Volume.a(SecurityToken.o): undefined reference to symbol 'dlopen@@GLIBC_2.1'
/lib/i386-linux-gnu/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[1]: *** [truecrypt] Error 1
make: *** [all] Error 2
user@user-pc:~/src/truecrypt-7.1a-source$ 
```

when using `$ make -j 2 PKCS11_INC=$HOME/src/pkcs-11 LIBS=-ldl`:

```

...

Forms/VolumeSizeWizardPage.o: In function `TrueCrypt::VolumeSizeWizardPage::GetVolumeSize() const':
VolumeSizeWizardPage.cpp:(.text._ZNK9TrueCrypt20VolumeSizeWizardPage13GetVolumeSizeEv+0x80): undefined reference to `TrueCrypt::StringConverter::ToUInt64(std::basic_string, std::allocator > const&)'
Forms/VolumeSizeWizardPage.o: In function `TrueCrypt::VolumeSizeWizardPage::SetVolumeSize(unsigned long long)':
VolumeSizeWizardPage.cpp:(.text._ZN9TrueCrypt20VolumeSizeWizardPage13SetVolumeSizeEy+0x8f): undefined reference to `TrueCrypt::StringConverter::FromNumber(unsigned long long)'
Forms/WizardFrame.o: In function `TrueCrypt::WizardFrame::SetStep(int, bool)':
WizardFrame.cpp:(.text._ZN9TrueCrypt11WizardFrame7SetStepEib+0xe6): undefined reference to `TrueCrypt::Event::Connect(TrueCrypt::EventConnectorBase const&)'
collect2: error: ld returned 1 exit status
make[1]: *** [truecrypt] Error 1
make: *** [all] Error 2
user@user-pc:~/src/truecrypt-7.1a-source$

```

(same without the `make -j ...` parameter BTW)

**edit3**

Now it works, thanks user76204 and GEO:

1. `$ sudo apt-get install build-essential nasm libfuse-dev wx-common wx2.8-headers libwxbase2.8-dev libwxsvg-dev libwxgtk2.8-0 libwxgtk2.8-dev`
2. `$ mkdir -p $HOME/src/pkcs-11`
3. put truecrypt sources to `/home/USERNAME/truecrypt-7.1a-source`
4. start building: `$ LIBS=-ldl make -j 2 PKCS11_INC=/home/USERNAME/src/pkcs-11/`