Skip to content

Building Symbian Projects with QtSDK

All new Symbian SDKs are now distributed inside the new QtSDK, so that should be my primary build environment. The new QtSDK also includes an updated version of GCCE (4.x), and new sbsv2 build, which is a lot better than the old symbian abld-build. With this tutorial you can still build your old symbian projects from mmp-files.
Configuring the new sbsv2 build to the QtSDK
Here’s an example of my setEnv.bat. In this case the QtSDK was installed into c-drive

SET PATH=C:\QtSDK\Symbian\tools\sbs\bin;C:\QtSDK\Symbian\tools\perl\bin;C:\QtSDK\Symbian\SDKs\Symbian3Qt473\epoc32\gcc\bin;C:\QtSDK\Symbian\SDKs\Symbian3Qt473\epoc32\tools;%PATH%
SET EPOCROOT=\QtSDK\Symbian\SDKs\Symbian3Qt473\
SET SBS_MINGW=C:\QtSDK\Symbian\tools\sbs\win32\mingw
SET SBS_HOME=C:\QtSDK\Symbian\tools\sbs
SET SBS_GCCE441BIN=C:\QtSDK\Symbian\tools\gcce4\bin
call C:\QtSDK\Symbian\SDKs\Symbian3Qt473\bin\qtenvS3.bat

Modifying bld.inf
The sbsv2 does not understand PRJ_PLATFORMS lists, so you’ll have to remove those. I left only PRJ_MMPFILES definitions in the bld.inf files.
Building with sbsv2
Here’s a list of couple of useful sbsv2 build command

sbs -c armv5_udeb_gcce                       - debug build with GCCE
sbs reallyclean                                    - cleans everthing
sbs clean

Building with qmake
To build with qmake from command line you’ll only need to run the qtenvs3.bat located at QtSDK\Symbian\SDKs\Symbian3Qt473\bin
Here’s a list of couple useful build commands:

qmake -spec symbian-sbsv2                      - uses sbsv2
make debug-gcce                                - makes debug with GCCE
make distclean                                 - cleans everthing
Configuring the old abld-build to the QtSDK

I don’t know why anyone would still like to use the old abld-build, but it still seems to be working with the new QtSDKs too.

  1. First add a new device for the QtSDK, and set it into default
  2. devices -add C:\QtSDK\Symbian\SDKs\Symbian3Qt473 C:\QtSDK\Symbian\SDKs\Symbian3Qt473]
  3. Then set the new device as default
  4. devices -setdefault
  5. Set the new EPCOROOT
  6. set EPOCROOT=\QtSDK\Symbian\SDKs\Symbian3Qt473\
  7. build with able-build as you used to.


  1. Tamstyler says:

    I don´t understand something, but it seems that you have not (much) Problems now or?^^

  2. LOL says:

    Go go go! You can do something Good 🙂

  3. Matoking says:

    Check his Twitter, he said he got gnuboy and AntSnesQT running on N8.

  4. ernest says:

    please, can you make a best emulator with sound of GBA for Symbian 5th generation???

  5. I have failed to use the qmake command on the command prompt… it gives me the error “qmake is not recognized as an internal or external command, operable program or batch file”, is there a solution?

  6. Matoking says:

    I’d really like to mess with the code, but I don’t even have a clear idea of what parameters to use when compiling or where I should place the source files. I like being able to compile straight from the IDE.

    • Summeli says:

      just use these commands, and run them on group level for antsnes lib, and in rootlevel for antsnesqt.
      And you can build antsnesqt with qt creator as well.

      • Matoking says:

        I tried building AntSnesQt (Qt 4.7.3 for Symbian^3 (Qt SDK) Release) in Qt Creator but it keeps throwing errors like :
        “:-1: warning: Missing dependency detected: D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/urel/antsnes.lib
        :-1: error: Recipe linkandpostlink failed with exit code 1.
        :-1: Running command: D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/tools/checklib.exe stdc++ –elf D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/urel/antsnes.lib D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/urel/qtmain.lib
        Running command: D:/QtSDK/Symbian/tools/gcce4/bin/arm-none-symbianelf-g++.exe -Wl,-Ttext,0x8000 -Wl,–no-undefined -nodefaultlibs -Wl,–strip-debug -Wl,-shared -Wl,-Tdata,0x400000 -Wl,–default-symver ‘-Wl,-soname=AntSnes{000a0000}[e4270701].exe’ -Wl,–entry=_E32Startup -Wl,-u,_E32Startup,D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/urel/eexe.lib -o D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/urel/AntSnes.exe.sym -Wl,-Map=D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/urel/ @D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/build/antsnesqt/c_bf5c342fc89607b4/AntSnes_exe/armv5/urel/AntSnes_urel_objects.via –start-group D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/urel/usrt3_1.lib –end-group D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/urel/usrt3_1.lib D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/urel/antsnes.lib D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/urel/qtmain.lib D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/scdv.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/ws32.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/cone.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/bitgdi.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/mediaclientaudiostream.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/eikcore.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/avkon.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/remconcoreapi.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/remconinterfacebase.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/ecom.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/mmfcontrollerframework.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/libstdcppv5.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/QtOpenGL.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/QtGui.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/QtCore.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/libGLESv2.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/libEGL.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/libpthread.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/libc.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/libm.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/euser.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/libdl.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/stdnew.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/drtaeabi.dso D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/lib/dfpaeabi.dso -lsupc++ -lgcc
        arm-none-symbianelf-g++.exe: D:/QtSDK/Symbian/SDKs/Symbian3Qt473/epoc32/release/armv5/urel/antsnes.lib: No such file or directory”
        It seems one of the errors is about the checklib executable you’ve ranted about, but even if I dummied it out it still keeps throwing that error.
        I haven’t really coded in Qt or C++, only done some UI stuff with orientation changes and stuff, but nothing functionally complete yet. Not that I would mess with the actual emulator stuff, I was just thinking about making a few UI changes.
        I really need step-by-step guides to do this before I get the full idea, so just giving a list of commands and few pointers isn’t enough.

      • Matoking says:

        Sorry, I was just dumb.
        So much for not knowing how to use the command “cd”.

  7. ngoanrazor says:

    you must build part snes9x_asm_optimized with sbsv2

  8. krivoz says:

    Hi i’m trying to build ‘snes9x_asm_optimized’ part with sbsv2 on this way:
    sbs -c armv5_udeb_gcce
    But throw me this:
    ‘sbs: error: Unknown build configuration ‘armv5_udeb_gcce’
    ‘sbs: error: No build configuration given’
    Someone can help me please

Leave a Reply