Wednesday, August 13, 2014

Compile EDB (Evan's Debugger) 32 bit version on Ubuntu 64 bit

These are main steps for compiling EDB (Evan's Debugger) 32 bit version on Ubuntu 64 bit

1. Download tarball
Download tarball here http://freecode.com/projects/edebugger
cd ~/Downloads
tar -zxf debugger-0.9.20.tgz
mv debugger debugger-0.9.20
cd debugger-0.9.20/

2. Install necessary libraries:
a. install GNU libc6 i386
sudo apt-get install libc6:i386 libc6-dev:i386

b. install qt i386 libraries
sudo apt-get install \
libqt4-core:i386 \
libqt4-dbus:i386 \
libqt4-declarative:i386 \
libqt4-designer:i386 \
libqt4-dev:i386 \
libqt4-dev-bin:i386 \
libqt4-help:i386 \
libqt4-network:i386 \
libqt4-opengl:i386 \
libqt4-opengl-dev:i386 \
libqt4-qt3support:i386 \
libqt4-script:i386 \
libqt4-scripttools:i386 \
libqt4-sql:i386 \
libqt4-sql-mysql:i386 \
libqt4-sql-sqlite:i386 \
libqt4-svg:i386 \
libqt4-test:i386 \
libqt4-xml:i386 \
libqt4-xmlpatterns:i386
libqtcore4:i386 \
libqtdbus4:i386 \
libqtgui4:i386 \
libqtwebkit-dev:i386 \
libqtwebkit4:i386 \
qt4-default:i386 \
qt4-designer:i386 \
qt4-dev-tools:i386 \
qt4-qmake:i386 \
qtchooser:i386 \

3. Create symlink to 32 bit headers
cd /usr/include
sudo mv sys sys_x86-64
sudo ln -s i386-linux-gnu/sys .

4. Modify qmake files
a. modify file src/src.pro as follows:

--- a/src/src.proq
+++ b/src/src.pro
@@ -196,20 +196,23 @@ unix {
                INCLUDEPATH += $$LEVEL/include/os/unix/osx /opt/local/include
        }
-       macx {
-               VPATH       += arch/x86_64 $$LEVEL/include/arch/x86_64
-               INCLUDEPATH += arch/x86_64 $$LEVEL/include/arch/x86_64
-       }
-
-       !macx:contains(QMAKE_HOST.arch, x86_64) {
-               VPATH       += arch/x86_64 $$LEVEL/include/arch/x86_64
-               INCLUDEPATH += arch/x86_64 $$LEVEL/include/arch/x86_64
-       }
-       
-       !macx:contains(QMAKE_HOST.arch, i[3456]86) {
-               VPATH       += arch/x86 $$LEVEL/include/arch/x86
-               INCLUDEPATH += arch/x86 $$LEVEL/include/arch/x86
-       }
+    VPATH       += arch/x86 $$LEVEL/include/arch/x86
+    INCLUDEPATH += arch/x86 $$LEVEL/include/arch/x86
+
+       #macx {
+       #       VPATH       += arch/x86_64 $$LEVEL/include/arch/x86_64
+       #       INCLUDEPATH += arch/x86_64 $$LEVEL/include/arch/x86_64
+       #}
+
+       #!macx:contains(QMAKE_HOST.arch, x86_64) {
+       #       VPATH       += arch/x86_64 $$LEVEL/include/arch/x86_64
+       #       INCLUDEPATH += arch/x86_64 $$LEVEL/include/arch/x86_64
+       #}
+       #
+       #!macx:contains(QMAKE_HOST.arch, i[3456]86) {
+       #       VPATH       += arch/x86 $$LEVEL/include/arch/x86
+       #       INCLUDEPATH += arch/x86 $$LEVEL/include/arch/x86
+       #}
        *-g++* | *-clang* {
                QMAKE_CXXFLAGS_DEBUG += -g3

b. modify file plugins/plugins.pri as follows:

--- a/plugins/plugins.pri
+++ b/plugins/plugins.pri
@@ -28,21 +28,24 @@ unix {
        freebsd-* : INCLUDEPATH += $$LEVEL/include/os/unix/freebsd
        macx-*    : INCLUDEPATH += $$LEVEL/include/os/unix/osx /opt/local/include
-       # arch include paths
-       macx {
-               INCLUDEPATH += $$LEVEL/include/arch/x86_64
-               include(plugins-x86_64.pri)
-       }
+    INCLUDEPATH += $$LEVEL/include/arch/x86
+    include(plugins-x86.pri)
-       !macx:contains(QMAKE_HOST.arch, x86_64) {
-               INCLUDEPATH += $$LEVEL/include/arch/x86_64
-               include(plugins-x86_64.pri)
-       }
-       
-       !macx:contains(QMAKE_HOST.arch, i[3456]86) {
-               INCLUDEPATH += $$LEVEL/include/arch/x86
-               include(plugins-x86.pri)
-       }
+       # arch include paths
+       #macx {
+       #       INCLUDEPATH += $$LEVEL/include/arch/x86_64
+       #       include(plugins-x86_64.pri)
+       #}
+
+       #!macx:contains(QMAKE_HOST.arch, x86_64) {
+       #       INCLUDEPATH += $$LEVEL/include/arch/x86_64
+       #       include(plugins-x86_64.pri)
+       #}
+       #
+       #!macx:contains(QMAKE_HOST.arch, i[3456]86) {
+       #       INCLUDEPATH += $$LEVEL/include/arch/x86
+       #       include(plugins-x86.pri)
+       #}
 }
 win32 {

5. Compile and install
cd ~/Downloads/debugger-0.9.20
qmake -spec linux-g++-32
make
sudo make INSTALL_ROOT=/opt/debugger-0.9.20_x86 install
sudo cp -r doc /opt/debugger-0.9.20_x86

6. Create .desktop file
sudo vim /usr/share/applications/edb_x86.desktop
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=edb_x86
Type=Application
GenericName=edb debugger x86
Comment=edb debugger x86
Exec=edb_x86
Icon=/opt/debugger-0.9.20_x86/doc/img/edb_disassembly.png
Terminal=false
Categories=Development;Qt;Debugger;

That's all
Good luck :)