Results 1 to 18 of 18

Thread: Removing dependencies for mingwm10.dll and libgcc_s_dw2-1.dll,static linking?

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #17
    Join Date
    Dec 2008
    Location
    Poland
    Posts
    383
    Thanks
    52
    Thanked 42 Times in 42 Posts
    Qt products
    Qt4
    Platforms
    MacOS X Unix/X11 Windows Android

    Default Re: Removing dependencies for mingwm10.dll and libgcc_s_dw2-1.dll,static linking?

    Hello,
    After some sleep I understood what you wrote, sorry about that, I need to get ride of habit of posting after 12h of coding, can't think straight.
    Yes You are right that mingw (actually mingwm10, and so on, dll's) probably can't be statical compiled (I don't count trick to load dll from resource, so only one exe is deployed). But, and that's why I misunderstood You in the first place, You really don't need i.e. mingwm10.dll for Release build (they are not linked at all).
    In short this dll handle exceptions and clean up after threads, but AFAIK, reference: http://old.nabble.com/mingwm10.dll-ts8920679.html , using:
    Qt Code:
    1. configure -static -release -no-exceptions
    To copy to clipboard, switch view to plain text mode 
    prevent linker from linking it ( -no-exceptions ). Also, on posted thread, they are saying that mingwm10.dll clean up after threads, to prevent memory leak (24 * sizeof (void*) = 96byte, second post, and yes I know that thread was started in 2007 so probably information are outdated) for each catch in thread. So to summ it up, if no exceptions are used and no -mthreads is passed at compile time no need for mingwm10. (maybe I'm wrong?)
    I wrote small test app, to see if something strange is going on with QThreads on static build, like mem leek and so on.
    stat_test_dyn.exe (dynamic release build, require all dll like mingwm, QCore4 ...)
    Qt Code:
    1. qmake.exe stat_test.pro -spec win32-g++ -r CONFIG+=release
    2. mingw32-make.exe -w in \stat_test
    3. objdump.exe -j .idata -p stat_test_dyn.exe | sed -ne '/mingwm10/,/^$/{p;}'
    4. DLL Name: mingwm10.dll
    5. vma: Hint/Ord Member-Name Bound-To
    To copy to clipboard, switch view to plain text mode 

    stat_test_static.exe (static release build, don't require all dll like mingwm, QCore4 ...)
    Qt Code:
    1. qmake.exe stat_test.pro -spec win32-g++ -r CONFIG+=release
    2. mingw32-make.exe -w in \stat_test
    3. objdump.exe -j .idata -p stat_test_static.exe | sed -ne '/mingwm10/,/^$/{p;}'
    4. no output
    To copy to clipboard, switch view to plain text mode 
    Program run 1000 times thread, one after another, and output values to progressbar (from 0 -> 100 ).
    I run it ten times, so assuming mem leak of 96bytes on each thread * 1000 * 10 = 937KB mem leek.
    statistics for stat_test_dyn.exe [DYNAMIC]
    dyn_Snap1..jpgdyn_Snap2..jpg
    after 10 runs mem usage is higher by168KB.

    statistics for stat_test_static.exe [STATIC]
    static_Snap1..jpgstatic_Snap2..jpg
    after 10 runs mem usage is higher by120KB.
    To sum it up 10000 thread's executed one after another. Test machine Windows XP SP3 32bit. Process Explorer v 11.33.
    In attachment is src code if someone would want to test this by itself.
    Of course there can be some error made by me, so you are welcome to point them out. stat_tst..zip

  2. The following user says thank you to Talei for this useful post:

    tetsuoii (4th January 2011)

Similar Threads

  1. static & dynamic linking
    By mickey in forum General Programming
    Replies: 6
    Last Post: 11th June 2010, 08:57
  2. Static linking with Qt
    By prykHetQuo in forum Qt Programming
    Replies: 3
    Last Post: 3rd June 2009, 20:56
  3. Static linking
    By didcea in forum Qt Programming
    Replies: 0
    Last Post: 11th October 2008, 18:40
  4. gentoo qt4 static linking
    By powermax in forum Newbie
    Replies: 1
    Last Post: 27th April 2008, 21:11
  5. Build static on windows without deps on mingwm10.dll
    By ucomesdag in forum Qt Programming
    Replies: 2
    Last Post: 9th July 2007, 05:46

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.