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 :)

7 comments:

Jeremy said...

Does this version work on both 32- and 64-bit platforms or only 32?

Son Nguyen said...

Hi Jeremy,

Thank for reading my blog post!
It can work on both 32 and 64 bit OS.

Thanks
Son

Sidakpal Singh said...

Thanks for the blog.
But I am facing a problem when I entered the make commmand. Please help me out .

The error is :

cd src/ && make -f Makefile
make[1]: Entering directory `/home/sidak/Downloads/debugger-0.9.20/src'
/usr/lib/x86_64-linux-gnu/qt4/bin/uic BinaryString.ui -o .release-shared/uic/ui_BinaryString.h
make[1]: /usr/lib/x86_64-linux-gnu/qt4/bin/uic: Command not found
make[1]: *** [.release-shared/uic/ui_BinaryString.h] Error 127
make[1]: Leaving directory `/home/sidak/Downloads/debugger-0.9.20/src'
make: *** [sub-src-make_default] Error 2

Son Nguyen said...

Hi Sidakpal,

From the error message I see the root cause is that you are missing a qt command.
*
make[1]: /usr/lib/x86_64-linux-gnu/qt4/bin/uic: Command not found
*
Please make sure that you did install qt packages at step *b. install qt i386 libraries*

Thanks
Son

Son Nguyen said...

One more thing, this error message
make[1]: /usr/lib/x86_64-linux-gnu/qt4/bin/uic: Command not found
means that you are using qt 64bit. This is wrong.
You should check again this step
4. Modify qmake files

Priya Rao said...

cd src/ && make -f Makefile
make[1]: Entering directory `/home/priya/debuggers/debugger/src'
/usr/lib/i386-linux-gnu/qt4/bin/uic BinaryString.ui -o .release-shared/uic/ui_BinaryString.h
make[1]: /usr/lib/i386-linux-gnu/qt4/bin/uic: Command not found
make[1]: *** [.release-shared/uic/ui_BinaryString.h] Error 127
make[1]: Leaving directory `/home/priya/debuggers/debugger/src'
make: *** [sub-src-make_default] Error 2

can anyone explain what is happening? :/
I've installed qt4-qmake instead of qt-sdk (thinking 540 MB is huge :/ )
so what do i need more to get this up and running?

Thanks

Anonymous said...

Hi how to emulate aladdin hasp srm key...