TestDisk Compilation

From CGSecurity

This document explains how to compile TestDisk and PhotoRec.

Contents

OS Notes

Please read notes about your OS:

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 laster 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. Exemple

./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 need decompress program file before run, what request some space on /tmp and running executable must be allowed in this directory (mount -o remount,exec /tmp).

Return to TestDisk page

Data Recovery