UPDATE 2009-10-22: Truecrypt 6.3 has been released, no need for this anymore
UPDATE 2009-09-18-2: Removed ref. to Fink as it requires to be built from source on Snow Leopard
UPDATE 2009-09-18: Added a missing requirement: pkg-config. See “installing pkg-config”

Unfortunately licensing issues prevent me from publishing my pre-compiled versions of TrueCrypt. So the next best thing I can do until there’s a new version of TrueCrypt that supports Snow Leopard, is to publish a “simple” do it your self guide.

In order to compile TrueCrypt for Mac OS X Snow Leopard you need the following:

  1. XCode (it’s under the Optional folder on the Snow Leopard Install DVD)
  2. macFUSE
  3. TrueCrypt and wxWidgets source code
  4. Header files from the RSA Security Inc. PKCS #11 Cryptographic Token Interface (Cryptoki) 2.20.
  5. pkg-config
  6. A patch that modifies the source code so it compiles under Snow Leopard.

Installing XCode

Install XCode from the Snow Leopard installation DVD. This should be pretty straight forward and hopefully does not need any further explanation.

Installing macFUSE

Download and install macFUSE from here: http://code.google.com/p/macfuse

Installing pkg-config

pkg-config can be installed either through MacPorts or through Fink. The difference is that MacPorts requires you to compile the source and Fink installs the binary version. I personally prefer Fink as it uses the debian package installer. Below you will find instructions for installing either through MacPorts. OR Fink. Don’t do both!

Installing pkg-config through Fink

  1. Get and install Fink 0.9 from here: http://www.finkproject.org/download/index.php?phpLang=en
  2. Install pkgconfig by issuing the following command:

    sudo apt-get update && sudo apt-get install pkgconfig

Installing pkg-config through MacPorts

  1. Get and install MacPorts from here: http://www.macports.org/install.php
  2. Install pkgconfig by issuing the following command:
    sudo port install pkgconfig
  3. Restart the Terminal application

Getting the TrueCrypt and wxWidgets source code

Download the TrueCrypt source code (preferably the tar.gz version) from here: http://www.truecrypt.org/downloads2

Open up a new Terminal window and create a new directory from where you will build TrueCrypt eg. $HOME/src:

mkdir $HOME/src

Uncompress the downloaded file into the new directory:

cd $HOME/src; tar xvzf $HOME/Downloads/TrueCrypt\ 6.2a\ Source.tar.gz

TrueCrypt uses the wxWidgets cross platform GUI library and therefore needs it to compile. Get it here:
http://prdownloads.sourceforge.net/wxwindows/wxMac-2.8.10.tar.gz

Uncompress the wxMac-2.8.10.tar.gz file into the $HOME/src directory using the following command:

cd $HOME/src; tar xvzf $HOME/Downloads/wxMac-2.8.10.tar.gz

You should now have two directories in the $HOME/src directory truecrypt-6.2a-source and wxMac-2.8.10. You can verify this by running the following command:

ls $HOME/src

In order to compile TrueCrypt for Snow Leopard the source code has to be patched slightly. I have prepared a patch file that can be applied to the code automatically using the patch utility. Download the patch from here: http://patrik.cqure.net/files/truecrypt-snow-leopard.patch

Apply the patch by running the following command:

cd $HOME/src; patch -p0 < $HOME/Downloads/truecrypt-snow-leopard.patch

You should see the following output:

patching file truecrypt-6.2a-source/Main/FatalErrorHandler.cpp
patching file truecrypt-6.2a-source/Main/StringFormatter.h
patching file truecrypt-6.2a-source/Makefile
Hunk #1 succeeded at 145 with fuzz 2.

TrueCrypt also uses a number of header files from RSA Security Inc. PKCS #11 Cryptographic Token Interface (Cryptoki) 2.20. These have to be downloaded manually from here: ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20. The files needed are pkcs11.h, pkcs11f.h and pkcs11t.h. They need to go into the directory $HOME/src/pkcs11. If your lazy you can run the following, which does this for you:

mkdir $HOME/src/pkcs11; cd $HOME/src/pkcs11; \
for f in pkcs11.h pkcs11f.h pkcs11t.h; do \
curl --no-epsv --ftp-pasv "ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20/${f}" > ${f}; \
done

Ok, so now we are all set with the source code and can begin compiling.

Compiling TrueCrypt

First of all we need to point out where our RSA Security pkcs stuff is located. You do this by issuing the following command in the Terminal:

export PKCS11_INC=$HOME/src/pkcs11

Once this is done we can start to compile the wxWidgets by issuing the following command:

cd $HOME/src/truecrypt-6.2a-source; make WX_ROOT=$HOME/src/wxMac-2.8.10 wxbuild

Compilation will take time and at times look as if it has stopped. Be patient and disregard any WARNINGS or error messages that you may see (there may be quite a few with different information!) If all went well you should now have a directory called $HOME/src/truecrypt-6.2a-source/wxrelease with 355 items in it. You can verify this by issuing the following command:

ls $HOME/src/truecrypt-6.2a-source/wxrelease | wc -l

With the wxWidgets compiled we can now start compiling TrueCrypt by issuing the following command:

cd $HOME/src/truecrypt-6.2a-source; make WXSTATIC=1

Again, compiling TrueCrypt will take some time but it should not return any errors. If all goes well, which it should if you have followed the guide properly, you should end up with a TrueCrypt.app folder under the Main directory. You can test whether the application works or not by running the following command:

open $HOME/src/truecrypt-6.2a-source/Main/TrueCrypt.app/

If it starts, you’re all set and simply need to copy or move the application into /Applications as usual. From the Terminal you can do this by issuing the following command:

cp -R $HOME/src/truecrypt-6.2a-source/Main/TrueCrypt.app /Applications

Good luck!

  • Share/Bookmark

Posted by patrik in Security

  1. 33 Responses to “Compiling TrueCrypt for Snow Leopard”

  2. When i try to patch, I get the error:

    “[14] 4380
    -bash: lt: command not found”

    is that an l or a 1?

    By Quyen on Sep 17, 2009

  3. sorry Quyen, there was a typo. I have fixed it now check out the correct patch command in the article.

    By Patrik on Sep 17, 2009

  4. I posted this on the True Crypt forum.

    http://forums.truecrypt.org/viewforum.php?f=12

    The entire post was removed.

    True Crypt dev team does not care about us.

    I would like to know if any n00bs got this to work.

    I am not sure if I want to try this yet.

    By Slum Dog on Sep 17, 2009

  5. Hi. I followed all your steps but whenever I run I get the same error:

    diskimages-helper(31550,0×100604000) malloc: *** error for object 0x10011bc00: pointer being freed was not allocated

    *** set a breakpoint in malloc_error_break to debug hdiutil: attach failed – No child processes

    Any idea?

    By Raisen on Sep 17, 2009

  6. Raisen, when do you get that error? Immediately after start or when you try to create a new volume? What version of MacFUSE are you running? Does the /var/log/system.log provide any additional insight to the problem?

    By Patrik on Sep 17, 2009

  7. hello,

    compiling of wxwidgets finished.
    while compiling truecrypt i get the following (and some more) errors:
    ….
    FuseService.cpp:317: error: ‘fuse_get_context’ was not declared in this scope
    FuseService.cpp: In member function ‘virtual void TrueCrypt::FuseService::ExecFunctor::operator()(int, char**)’:
    FuseService.cpp:540: error: ‘fuse_operations’ does not name a type
    FuseService.cpp:542: error: ‘fuse_service_oper’ was not declared in this scope
    FuseService.cpp:582: error: ‘fuse_main’ was not declared in this scope
    lipo: can’t figure out the architecture type of: /var/folders/yI/yIQ23MMXZA1sO++++TI/-Tmp-//ccUCF79l.out
    make[1]: *** [FuseService.o] Error 1
    make: *** [all] Error 2

    By stone on Sep 17, 2009

  8. Hey Patrik,

    I tried it out as well but have a different problem:

    Compiling FuseService.cpp
    FuseService.cpp:12:18: error: fuse.h: No such file or directory
    FuseService.cpp: In function ‘int TrueCrypt::fuse_service_getattr(const char*, TrueCrypt::stat*)’:
    FuseService.cpp:98: error: invalid application of ‘sizeof’ to incomplete type ‘TrueCrypt::stat’
    FuseService.cpp:100: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    ETC, ETC

    This happens at the MAKE step. I am running MacFuse 2.0.3,2. Any ideas? I would love to get this working.

    Cheers for all your work!

    By Wilson on Sep 18, 2009

  9. For all of you having trouble compiling, please note that the article is updated! I had missed the pkgconfig requirement! Sorry for that.

    By Patrik on Sep 18, 2009

  10. Many Thanks Patrik!

    Just compiled it successfully and created a container :-)

    ps.: I used macports.

    best regards
    jo

    By stone on Sep 18, 2009

  11. I am pleased to here it worked out at last!

    By Patrik on Sep 18, 2009

  12. Hi Patrik, thanks a lot for your guide!
    I just did everything the way you described and all went smooth. Just the bunch of warnings while compiling wxWidgets scared me a little :-) . BTW I got the pkgconfig 0.23 sources from http://pkgconfig.freedesktop.org/releases/ and compiled it myself without problems.
    Got rid of my last show-stopper for upgrading to SL! :-D

    Cheers,
    Ten

    By Ten on Sep 18, 2009

  13. Thanks for the revisions. It works great.

    couple things:
    1)’cd $HOME/src; tar xvzf /Users/patrik/Downloads/wxMac-2.8.10.tar.gz’ maybe should be changed to ‘cd $HOME/src; tar xvzf $HOME/Downloads/wxMac-2.8.10.tar.gz’
    2) I think maybe rebooting after installing MacPorts is a good idea

    That did it for me

    Just what I needed.

    Cheers

    By Wilson on Sep 18, 2009

  14. Thanks for your input Wilson. I have updated the post accordingly. I think restarting the Terminal should be sufficient in order to update the relevant paths etc.

    By Patrik on Sep 18, 2009

  15. Works like a charm :-)

    Thanx a lot for the howto.

    By zorro on Sep 19, 2009

  16. thanks for your howto!

    By Pachi on Sep 21, 2009

  17. I get the following error when I try to install pkgconfig…commands & output are all shown below. any ideas? MacPorts was installed from latest version for Snow Leopard before this was attempted.

    sudo port install pkgconfig
    Password:
    —> Computing dependencies for pkgconfig
    —> Configuring pkgconfig
    Error: Target org.macports.configure returned: configure failure: shell command ” cd “/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_pkgconfig/work/pkg-config-0.23″ && ./configure –prefix=/opt/local –enable-indirect-deps –with-pc-path=/opt/local/lib/pkgconfig:/opt/local/share/pkgconfig ” returned error 77
    Command output: checking for a BSD-compatible install… /usr/bin/install -c
    checking whether build environment is sane… yes
    checking for gawk… no
    checking for mawk… no
    checking for nawk… no
    checking for awk… awk
    checking whether make sets $(MAKE)… no
    checking whether to enable maintainer-specific portions of Makefiles… no
    checking build system type… i386-apple-darwin10.0.0
    checking host system type… i386-apple-darwin10.0.0
    checking for style of include used by make… none
    checking for gcc… /usr/bin/gcc-4.2
    checking for C compiler default output file name…
    configure: error: C compiler cannot create executables
    See `config.log’ for more details.

    Error: Status 1 encountered during processing.

    By Steve on Sep 23, 2009

  18. Steve,

    Could you please try to update your ports by issuing: sudo port -d selfupdate.
    After this completes try installing the port again. If it still fails could you e-mail me the config.log that get generated?

    By Patrik on Sep 23, 2009

  19. If you are getting this error:

    Package fuse was not found in the pkg-config search path.
    Perhaps you should add the directory containing `fuse.pc’
    to the PKG_CONFIG_PATH environment variable
    No package ‘fuse’ found
    Package fuse was not found in the pkg-config search path.
    Perhaps you should add the directory containing `fuse.pc’
    to the PKG_CONFIG_PATH environment variable
    No package ‘fuse’ found
    Compiling FuseService.cpp
    FuseService.cpp:12:18: error: fuse.h: No such file or directory
    FuseService.cpp: In function ‘int TrueCrypt::fuse_service_getattr(const char*, TrueCrypt::stat*)’:
    FuseService.cpp:98: error: invalid application of ‘sizeof’ to incomplete type ‘TrueCrypt::stat’
    FuseService.cpp:100: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:101: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:102: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:103: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:104: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:108: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:109: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:118: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:119: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:120: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:124: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:125: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:126: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp: In function ‘int TrueCrypt::fuse_service_open(const char*, TrueCrypt::fuse_file_info*)’:
    FuseService.cpp:172: error: invalid use of incomplete type ‘struct TrueCrypt::fuse_file_info’
    FuseService.cpp:142: error: forward declaration of ‘struct TrueCrypt::fuse_file_info’
    FuseService.cpp: At global scope:
    FuseService.cpp:251: error: ‘fuse_fill_dir_t’ has not been declared
    FuseService.cpp: In function ‘int TrueCrypt::fuse_service_readdir(const char*, void*, int, off_t, TrueCrypt::fuse_file_info*)’:
    FuseService.cpp:261: error: ‘filler’ cannot be used as a function
    FuseService.cpp:262: error: ‘filler’ cannot be used as a function
    FuseService.cpp:263: error: ‘filler’ cannot be used as a function
    FuseService.cpp:264: error: ‘filler’ cannot be used as a function
    FuseService.cpp: In static member function ‘static bool TrueCrypt::FuseService::CheckAccessRights()’:
    FuseService.cpp:317: error: ‘fuse_get_context’ was not declared in this scope
    FuseService.cpp: In member function ‘virtual void TrueCrypt::FuseService::ExecFunctor::operator()(int, char**)’:
    FuseService.cpp:540: error: ‘fuse_operations’ does not name a type
    FuseService.cpp:542: error: ‘fuse_service_oper’ was not declared in this scope
    FuseService.cpp:582: error: ‘fuse_main’ was not declared in this scope
    FuseService.cpp:12:18: error: fuse.h: No such file or directory
    FuseService.cpp: In function ‘int TrueCrypt::fuse_service_getattr(const char*, TrueCrypt::stat*)’:
    FuseService.cpp:98: error: invalid application of ‘sizeof’ to incomplete type ‘TrueCrypt::stat’
    FuseService.cpp:100: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:101: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:102: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:103: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:104: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:108: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:109: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:118: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:119: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:120: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:124: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:125: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp:126: error: invalid use of incomplete type ‘struct TrueCrypt::stat’
    FuseService.cpp:94: error: forward declaration of ‘struct TrueCrypt::stat’
    FuseService.cpp: In function ‘int TrueCrypt::fuse_service_open(const char*, TrueCrypt::fuse_file_info*)’:
    FuseService.cpp:172: error: invalid use of incomplete type ‘struct TrueCrypt::fuse_file_info’
    FuseService.cpp:142: error: forward declaration of ‘struct TrueCrypt::fuse_file_info’
    FuseService.cpp: At global scope:
    FuseService.cpp:251: error: ‘fuse_fill_dir_t’ has not been declared
    FuseService.cpp: In function ‘int TrueCrypt::fuse_service_readdir(const char*, void*, int, off_t, TrueCrypt::fuse_file_info*)’:
    FuseService.cpp:261: error: ‘filler’ cannot be used as a function
    FuseService.cpp:262: error: ‘filler’ cannot be used as a function
    FuseService.cpp:263: error: ‘filler’ cannot be used as a function
    FuseService.cpp:264: error: ‘filler’ cannot be used as a function
    FuseService.cpp: In static member function ‘static bool TrueCrypt::FuseService::CheckAccessRights()’:
    FuseService.cpp:317: error: ‘fuse_get_context’ was not declared in this scope
    FuseService.cpp: In member function ‘virtual void TrueCrypt::FuseService::ExecFunctor::operator()(int, char**)’:
    FuseService.cpp:540: error: ‘fuse_operations’ does not name a type
    FuseService.cpp:542: error: ‘fuse_service_oper’ was not declared in this scope
    FuseService.cpp:582: error: ‘fuse_main’ was not declared in this scope
    lipo: can’t figure out the architecture type of: /var/folders/B1/B1LJiAyjGNuOhekZm3xRKE+++TM/-Tmp-//ccIUPTXp.out
    make[1]: *** [FuseService.o] Error 1
    make: *** [all] Error 2

    This is the solution:

    sudo cp /usr/local/lib/pkgconfig/fuse.pc /opt/local/lib/pkgconfig/

    By A Friend on Sep 24, 2009

  20. Thanks Patrik! Worked like a charm, just about to create my new TrueCrypt volume!

    Many Thanks!
    Holger

    By Holger on Sep 28, 2009

  21. Hi Patrik–Easy as pie–until I go to the “ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20″ link to download the RSA files. I get an error page in both Safari AND Firefox, as follows:

    “You have tried to access the ftp domain.
    Its DNS record does point to this server, but this server does not host this domain.

    If you think that this message is in error, please contact postmaster@bl-107.cluster1.echolabs.net

    I’m stuck at this point–everything else installed seamlessly. HELP!!!!

    By Russ on Sep 30, 2009

  22. wxWidgets appeared to have compiled correctly, however when attempting to do compile TrueCrypt itself, I encounter the following error:

    vikram:~ Vik$ cd $HOME/src/truecrypt-6.2a-source; make WXSTATIC=1
    Compiling Keyfile.cpp
    In file included from Keyfile.cpp:10:
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:43:21: error: pkcs11.h: No such file or directory
    In file included from Keyfile.cpp:10:
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:56: error: ‘CK_SLOT_ID’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:57: error: ‘CK_FLAGS’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:77: error: ‘CK_OBJECT_HANDLE’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:80: error: ‘CK_SLOT_ID’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:86: error: expected `)’ before ‘errorCode’
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:92: error: expected `)’ before ‘errorCode’
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:106: error: ‘CK_RV’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:109: error: ‘CK_RV’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:160: error: ‘CK_SESSION_HANDLE’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:181: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:183: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:186: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:194: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:195: error: ‘CK_OBJECT_HANDLE’ was not declared in this scope
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:195: error: template argument 1 is invalid
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:195: error: template argument 2 is invalid
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:195: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:195: error: ‘CK_ATTRIBUTE_TYPE’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:196: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:196: error: ‘CK_OBJECT_HANDLE’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:196: error: ‘CK_ATTRIBUTE_TYPE’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:197: error: ‘CK_SLOT_ID’ was not declared in this scope
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:197: error: template argument 1 is invalid
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:197: error: template argument 2 is invalid
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:198: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:199: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:200: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:205: error: ‘CK_FUNCTION_LIST_PTR’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:211: error: ‘CK_SLOT_ID’ was not declared in this scope
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:211: error: template argument 1 is invalid
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:211: error: template argument 3 is invalid
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:211: error: template argument 4 is invalid
    In file included from Keyfile.cpp:10:
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:43:21: error: pkcs11.h: No such file or directory
    In file included from Keyfile.cpp:10:
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:56: error: ‘CK_SLOT_ID’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:57: error: ‘CK_FLAGS’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:77: error: ‘CK_OBJECT_HANDLE’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:80: error: ‘CK_SLOT_ID’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:86: error: expected `)’ before ‘errorCode’
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:92: error: expected `)’ before ‘errorCode’
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:106: error: ‘CK_RV’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:109: error: ‘CK_RV’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:160: error: ‘CK_SESSION_HANDLE’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:181: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:183: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:186: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:194: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:195: error: ‘CK_OBJECT_HANDLE’ was not declared in this scope
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:195: error: template argument 1 is invalid
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:195: error: template argument 2 is invalid
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:195: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:195: error: ‘CK_ATTRIBUTE_TYPE’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:196: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:196: error: ‘CK_OBJECT_HANDLE’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:196: error: ‘CK_ATTRIBUTE_TYPE’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:197: error: ‘CK_SLOT_ID’ was not declared in this scope
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:197: error: template argument 1 is invalid
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:197: error: template argument 2 is invalid
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:198: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:199: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:200: error: ‘CK_SLOT_ID’ has not been declared
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:205: error: ‘CK_FUNCTION_LIST_PTR’ does not name a type
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:211: error: ‘CK_SLOT_ID’ was not declared in this scope
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:211: error: template argument 1 is invalid
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:211: error: template argument 3 is invalid
    /Users/Vik/src/truecrypt-6.2a-source/Common/SecurityToken.h:211: error: template argument 4 is invalid
    lipo: can’t figure out the architecture type of: /var/folders/Om/OmX9T3IVHvKg8dlSCOiefE+++TI/-Tmp-//ccM8aBHZ.out
    make[1]: *** [Keyfile.o] Error 1
    make: *** [all] Error 2
    vikram:truecrypt-6.2a-source Vik$

    Help would be appreciated.

    By Vikram Verma on Sep 30, 2009

  23. Can someone just post a compiled version that works with Snow Leopard?

    By Zach on Oct 2, 2009

  24. Thank you for this guide, but for me truecrypt throws this error while making:

    Linking TrueCrypt
    Undefined symbols for architecture i386:
    “_iconv_close”, referenced from:
    wxMBConv_iconv::~wxMBConv_iconv()in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::~wxMBConv_iconv()in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::~wxMBConv_iconv()in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::~wxMBConv_iconv()in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    “_iconv”, referenced from:
    wxMBConv_iconv::GetMBNulLen() const in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::WC2MB(char*, wchar_t const*, unsigned long) constin libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::WC2MB(char*, wchar_t const*, unsigned long) constin libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::MB2WC(wchar_t*, char const*, unsigned long) constin libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::MB2WC(wchar_t*, char const*, unsigned long) constin libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::wxMBConv_iconv(wchar_t const*)in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    “_iconv_open”, referenced from:
    wxMBConv_iconv::wxMBConv_iconv(wchar_t const*)in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::wxMBConv_iconv(wchar_t const*)in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::wxMBConv_iconv(wchar_t const*)in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::wxMBConv_iconv(wchar_t const*)in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    ld: symbol(s) not found for architecture i386
    collect2: ld returned 1 exit status
    Undefined symbols for architecture ppc:
    “_iconv_close”, referenced from:
    wxMBConv_iconv::~wxMBConv_iconv()in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::~wxMBConv_iconv()in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::~wxMBConv_iconv()in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::~wxMBConv_iconv()in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    “_iconv”, referenced from:
    wxMBConv_iconv::MB2WC(wchar_t*, char const*, unsigned long) constin libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::MB2WC(wchar_t*, char const*, unsigned long) constin libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::GetMBNulLen() const in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::WC2MB(char*, wchar_t const*, unsigned long) constin libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::WC2MB(char*, wchar_t const*, unsigned long) constin libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::wxMBConv_iconv(wchar_t const*)in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    “_iconv_open”, referenced from:
    wxMBConv_iconv::wxMBConv_iconv(wchar_t const*)in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::wxMBConv_iconv(wchar_t const*)in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::wxMBConv_iconv(wchar_t const*)in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    wxMBConv_iconv::wxMBConv_iconv(wchar_t const*)in libwx_base_carbonu-2.8.a(baselib_strconv.o)
    ld: symbol(s) not found for architecture ppc
    collect2: ld returned 1 exit status
    lipo: can’t open input file: /var/folders/PB/PBf5yBA8G5mMx0GkkjXWw++++TY/-Tmp-//ccmfTiV9.out (No such file or directory)
    make[1]: *** [TrueCrypt] Error 1
    make: *** [all] Error 2

    While building this kernel was booted …

    Darwin Kernel Version 10.0.0: Fri Jul 31 22:47:34 PDT 2009; root:xnu-1456.1.25~1/RELEASE_I386 i386

    … and gcc v.4.2.1 was used:

    edv-macbookproa:truecrypt-6.2a-source martinbehrens$ gcc -v
    Using built-in specs.
    Target: i686-apple-darwin10
    Configured with: /var/tmp/gcc/gcc-5646~6/src/configure –disable-checking –enable-werror –prefix=/usr –mandir=/share/man –enable-languages=c,objc,c++,obj-c++ –program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ –with-slibdir=/usr/lib –build=i686-apple-darwin10 –with-gxx-include-dir=/include/c++/4.2.1 –program-prefix=i686-apple-darwin10- –host=x86_64-apple-darwin10 –target=i686-apple-darwin10
    Thread model: posix
    gcc version 4.2.1 (Apple Inc. build 5646)

    Are there any suggestions?

    By rent on Oct 2, 2009

  25. Patrik, good guide, worked without issues. A new volume is in the work just now.

    By Tim on Oct 4, 2009

  26. zach, looks as if there’s problem with libiconv. Did you upgrade to Snow Leopard or did you do a fresh install? If you upgraded did you have macports installed prior to upgrade.

    I did an upgrade with macports already installed and had quite some issues with this myself as several ports were broken and required re-building.

    If this is your case this may (or may not) do it:
    sudo port uninstall -f libiconv
    sudo port install libiconv

    By Patrik on Oct 4, 2009

  27. Patrik, if you’ve upgraded to Snow Leopard you basically need to completely rebuild the macports tree from scratch. I’ve done it. Also note that things like WINE are tricky to install because of 64-bit.

    By Dave on Oct 11, 2009

  28. Dave, that’s what I ended up doing to.

    By Patrik on Oct 11, 2009

  29. Holger, I have no problem reaching that URL. Let me know if you still do and I’ll try to post the files somewhere else for you.

    By Patrik on Oct 11, 2009

  30. Vikram, looks as if your missing the pkcs files from rsa security. Did you follow the steps properly?

    By Patrik on Oct 11, 2009

  31. I had the same libiconv issue. What I did was make sure I didn’t have a copy of the library in /usr/local/lib. I also broke my MacPorts tree by renaming /opt/local and used a manual installation of pkg-config (goes in /usr/local).

    This worked, and inspection with otool reveals that the produced binary should be portable to 10.6 machines that don’t have libiconv from MacPorts installed.

    By Dave on Oct 16, 2009

  32. TrueCrypt 6.3 with full Snow leopard support is released!

    http://www.truecrypt.org/downloads

    By Benni on Oct 22, 2009

  33. Thanks Benni. I have posted another blog entry and updated this one.

    By patrik on Oct 22, 2009

  1. 1 Trackback(s)

  2. Sep 16, 2009: patrik.cqure.net » Blog Archive » Compiling TrueCrypt for Snow Leopard | Online Logic - Internet Marketing Strategies

Post a Comment

Get Adobe Flash playerPlugin by wpburn.com wordpress themes