This page describes the standard procedure to download, compile, and install Frida.
To compile the sources, one needs the compilation tools
and the libraries (-dev packages)
At runtime, one external program is needed:
In Debian/Ubuntu, the following command installs all required packages:
sudo aptitude install \ make \ g++ \ bison \ flex \ libreadline-dev \ libgsl0-dev \ libfftw3-dev \ libyaml-cpp-dev \ libboost-regex-dev \ libboost-date-time-dev \ gnuplot
Other required packages are automatically installed through dependencies. In particular, each development package (-dev, containing the .h files) depends on a library package that contains the corresponding shared library.
The libboost regex and date-time development packages depend on libboost-dev which contains, among others, the shared pointer module (which is implemented through .h files only; no shared library).
There may be some incompatibility between g++ and libboost versions. With g++ version >= 4.4, we need at least libboost1.40.
Download most recent source packages from http://apps.jcns.fz-juelich.de/src/frida/.
Unpack, configure, make, install the libraries:
tar xzvf frida2libs-<version>.tgz cd frida2libs ./configure make sudo make install sudo ldconfig # see note below cd ..
Note regarding ldconfig: This command somehow registers new libraries. I am surprised that it is not automatically executed by make install. But this seems to be distribution specific. Users report:
sudo ldconfig # required in Ubuntu sudo /sbin/ldconfig /usr/local/bin # required in Suse
Unpack and build the main program. Note that this procedure is based on CMake, whereas the libraries are still built using GNU autotools.
tar xzvf frida2-<version>.tgz cd frida2 mkdir build cd build cmake .. make -j<n>
where <n> is the number of processors to be used in parallel.
Now run the test suite:
unset LD_LIBRARY_PATH ctest -j<n>
Unsetting the environment variable LD_LIBRARY_PATH ensures that freshly compiled libraries are used, and not previously installed ones.
Only proceed if all tests pass. Otherwise run
to get more verbous output, and report to the maintainer.
If tests pass, proceed with
sudo make install
Finally, create a directory for the graphics output:
That's it. The command
frida should start a frida session.
Try to run the following test session:
$ frida ? > fm # enter command fm = file make to create a little data file Number of points per spectrum  ? 11 # enter 11 to overwrite the default 1 Number of spectra  ? # just press RETURN to accept the default value Save as [grid3] ? # again, we just accept the default value 0 > oy x^2 # our data file becomes a parabola 1 > p # plot it 1 > cc p0*t^p1 # create a fit curve: some power law 2 > cwc # equal weight to all data points (since no error bars are set) 2 > cf # fit p0,p1 to the data; should say "success" 2 > a # add the fit to the plot 2 > quit # terminate the frida session
If libraries are not found, check LD_LIBRARY_PATH. Possibly, /usr/local/lib must be added. [related commands: ldd, ldconfig].
If configure fails because libreadline is reportedly not found or corrupted, please check the config.log for further details. If it contains error messages like the following
/usr/users/iff_ns/brodeck/usr/local/lib/libreadline.so: undefined reference to `PC' /usr/users/iff_ns/brodeck/usr/local/lib/libreadline.so: undefined reference to `tgetflag' ... /usr/users/iff_ns/brodeck/usr/local/lib/libreadline.so: undefined reference to `tgetstr'
then this due to a bug in outdated Linux distributions like CentOS5. See https://bugzilla.redhat.com/show_bug.cgi?id=499837. The missing symbols are provided by the library ncurses.
and run configure again.
If problems persist, please send a bug report. Attach the output of
make clean ./configure | tee configure.log make | tee make.log
and attach configure.log and make.log.