Fortunately, in the latest version of Ubuntu it is possible to install almost all the IA32 dependencies by hand following a simple scheme.
First we need to see which dynamic libraries are not found by the loader. To do so we can use the `ldd` command to print all the dynamic libraries missing:
$ ldd idaq | grep found
libXext.so.6 => not found
libfreetype.so.6 => not found
libSM.so.6 => not found
libXrender.so.1 => not found
libfontconfig.so.1 => not found
Once we have the list of missing libraries, we need to see from which packaged they come from. One simple way is to use `dpkg`. So for each of the missing libraries we proceed like this:
$ dpkg -S libXext.so.6As we can see, the file is provided by `libxext6`, but we need to take into account that we need the IA32 versions of the libraries.
libxext6: /usr/lib/x86_64-linux-gnu/libXext.so.6
Fortunately, Ubuntu does allow us to install both versions and it is just a matter of adding ":i386" at the end of the package name.
$ sudo apt-get install libXext6:i386Once we have installed each one of the libraries IDA Pro will fire up, but we will receive a dissapointing message the the IDAPython plugin is not working due to missing dependencies.
dlopen(/home/agustin/opt/idapro/plugins/python.plx): libpython2.6.so.1.0: cannot open shared object file: No such file or directory/home/agustin/opt/idapro/plugins/python.plx: can't load file
We need to proceed in the same way as we did before, but there is a slight difference. We need a dynamic library that comes from Python 2.6 and as the release notes says, Python 2.6 has been deprecated.
In a previous iteration of this blog entry what I did was to download these packages from an old Ubuntu repository. This was not ideal since I always ended up breaking some dependencies and the package manager was not happy about it.
So I took another way and tried to build it from the source. The steps you need to follow are described bellow and need to be issued in the Python2.6 source directory:
The last step is to tell the loader where those libraries are. There are multiple options but for simplicity sake I choose to export the environment variable `LD_LIBRARY_PATH` and make it point to `/opt/pym32/lib`
In a previous iteration of this blog entry what I did was to download these packages from an old Ubuntu repository. This was not ideal since I always ended up breaking some dependencies and the package manager was not happy about it.
So I took another way and tried to build it from the source. The steps you need to follow are described bellow and need to be issued in the Python2.6 source directory:
$ CC="gcc -m32" LDFLAGS="-L/lib32 -L/usr/lib32 \This will install python in the directory `/opt/pym32` along with all the needed shared libraries for IDAPython to run.
-L`pwd`/lib32 -Wl,-rpath,/lib32 -Wl,-rpath,/usr/lib32" \
./configure --prefix=/opt/pym32 --enable-shared
$ make -j 8
$ sudo make install
The last step is to tell the loader where those libraries are. There are multiple options but for simplicity sake I choose to export the environment variable `LD_LIBRARY_PATH` and make it point to `/opt/pym32/lib`
$ export LD_LIBRARY_PATH="/opt/pym32/lib"And that's it, now you have a running version of IDA Pro all with IDAPython running as it should.
$ /home/agustin/opt/ida/idaq64
3 comments:
Hey thanks man...Your post saved my day...!!!
Thanks for the post..you saved my day.!!
Thanks bro, after spending hours on the internet to find struff about libraries I did not understand, finally a clear explanation with all the usefull cmd lines!!
Post a Comment