# TestDisk Compilation

### From CGSecurity

This document explains how to compile TestDisk and PhotoRec.

## Libraries

- libncurses - Required, TestDisk and PhotoRec use an ncurses interface, so ncurses library and development files must be present.
- Ext2fs library - Optional, used by TestDisk to list files from ext2/ext3 partition
- Reiserfs library - Optional, used by TestDisk to list files from reiserfs partition
- NTFS library - Optional, used by TestDisk to list files from NTFS partition
- Jpeg library - Optional, used by PhotoRec to improved JPEG recovery rate

### Ext2fs Library

Ext2fs library is usually installed with your OS, so you don't need to compile it yourself. Otherwise get latest version of e2fsprogs at http://e2fsprogs.sourceforge.net

    tar xvf e2fsprogs-1.38.tgz
    cd e2fsprogs-1.38
    ./configure --with-cc=gcc
    make libs
    make install

### Jpeg library

Libjpeg library is usually installed with your OS, so you don't need to compile it yourself. Otherwise download libjpeg source from ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz

    tar xzf jpegsrc.v6b.tar.gz
    cd jpeg-6b
    ./configure --enable-shared --enable-static
    make
    sudo make install

Mac OS X 10.3 ships with GNU libtool, albeit under a slightly different name, glibtool. You may have to run

    ln -s `which glibtool` ./libtool

### How to compile ntfsprogs

Get the latest version of ntfsprogs from http://linux-ntfs.sf.net/

    tar xzf ntfsprogs-1.13.0.tar.gz
    cd ntfsprogs-1.13.0
    ./configure
    make libs
    make install

To get a working version under NT 4, use `configure --disable-default-device-io-ops` because SetFilePointerEx used by win32_io.c is not exported by NT 4 DLL.

### ReiserFS Library

Get progsreiserfs-0.3.1-rc8.tar.gz at http://reiserfs.osdn.org.ua/

    tar xzf progsreiserfs-*.tar.gz
    cd progreiserfs-0.3.1-rc8
    ./configure --disable-nls
    make
    make install

## How to compile TestDisk

### Standard method

To compile TestDisk and PhotoRec, run

    ./configure
    make

You may need to specify parameters to configure, see configure --help.
Example:

    ./configure
    --with-reiserfs-lib=/home/kmaster/perso/testdisk-5.2/progsreiserfs-0.3.1-rc8/libreiserfs/.libs/
    --with-reiserfs-includes=/home/kmaster/perso/testdisk-5.2/progsreiserfs-0.3.1-rc8/include/
    --with-ntfs-lib=/home/kmaster/perso/testdisk-5.2/ntfsprogs-1.8.5/libntfs/.libs/
    --with-ntfs-includes=/home/kmaster/perso/testdisk-5.2/ntfsprogs-1.8.5/include/
    --with-ext2fs-lib=/home/kmaster/perso/testdisk-5.2/e2fsprogs-1.34/lib
    --with-ext2fs-includes=/home/kmaster/perso/testdisk-5.2/e2fsprogs-1.34/lib

### Static version

If you need to run the binary on systems that lack one of the previous libraries, create a static binary with

    make static

### Static compressed binary

If you need a small binary for binary distribution, get the UPX packer at http://upx.sourceforge.net/ and run

    strip src/testdisk src/photorec
    upx src/testdisk src/photorec

Note that Linux UPX needs to decompress program files before running, and it will request some space on /tmp to do this. The running executable must be allowed in this directory (mount -o remount,exec /tmp).

## OS Notes

Please read notes about your OS:

- DOS
- GNU/Linux
- Win
- MacOSX

## Cross-compilation

- Linux to PowerPC Darwin/MacOSX cross-compiler

Return to TestDisk page

Category: Data Recovery

##### Data Recovery

- TestDisk
- PhotoRec
- download