From: richard b. <ivo...@gm...> - 2008-08-29 16:09:47
|
A short question: I am wanting to package and deploy my MinGW-created .exe to other boxes without MinGW. To identify all necessary external dll's, I have used 'objdump -p'. However, when deploying the .exe on a different box, it refuses to start since it can't find a missing dll. But this particular dll was not listed with objdump. Is there any way to absolutely identify all external dll's necessary to be contained in a delivery of an application created with MinGW? Thanks in advance, richard |
From: Giel v. S. <me...@mo...> - 2008-08-29 16:14:58
Attachments:
signature.asc
|
richard boaz schreef: > Is there any way to absolutely identify all external dll's necessary to be > contained in a delivery of an application created with MinGW? Unless you compile an application with multi threading enabled you should not need any DLLs at all when compiling with MinGW. When you enable multi threading you'll need mingwm10.dll (I hope I remember the filename correctly). This is of course assuming that you're not linking with any external shared libraries, in which case you *will* need the DLL you (explicitly!) linked with. That should be obvious though. -- Giel |
From: richard b. <ivo...@gm...> - 2008-08-29 18:12:22
|
On Fri, Aug 29, 2008 at 6:14 PM, Giel van Schijndel <me...@mo...> wrote: > richard boaz schreef: > > Is there any way to absolutely identify all external dll's necessary to > be > > contained in a delivery of an application created with MinGW? > > Unless you compile an application with multi threading enabled you > should not need any DLLs at all when compiling with MinGW. When you > enable multi threading you'll need mingwm10.dll (I hope I remember the > filename correctly). > > This is of course assuming that you're not linking with any external > shared libraries, in which case you *will* need the DLL you > (explicitly!) linked with. That should be obvious though. > I should be more explicit. My application makes liberal use of GTK+. The missing library is libcairo-2.dll, even though this does not appear in the output of objdump. My suspicion is that it is an internal dependency to one of the GTK+ libraries (pango the likely culprit?), and so does not appear as an object in my application. So my question more explicitly is, how can I discover "all" library dependencies, even though an external library might not be explicitly contained in my application itself? richard > -- > Giel > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > MinGW-users mailing list > Min...@li... > > You may change your MinGW Account Options or unsubscribe at: > https://lists.sourceforge.net/lists/listinfo/mingw-users > > |
From: Charles W. <cwi...@us...> - 2008-08-29 18:21:48
|
richard boaz wrote: > So my question more explicitly is, how can I discover "all" library > dependencies, even though an external library might not be explicitly > contained in my application itself? cygcheck.exe can be extracted from the cygwin distribution (it is NOT a cygwin program and can be used standalone). DependencyWalker is available from sysinternals. However, both of those only show explicitly, linked dependencies. If your application (or one of your explicitly-depended libraries) uses LoadLibrary("some other dll"), then you probably need to use ProcessExplorer also from sysinternals And investigate the behavior of your application *while it is running*. -- Chuck |
From: Tuomo L. <dj...@ik...> - 2008-08-29 18:41:03
|
Charles Wilson wrote: > However, both of those only show explicitly, linked dependencies. If > your application (or one of your explicitly-depended libraries) uses > LoadLibrary("some other dll"), then you probably need to use > > ProcessExplorer also from sysinternals > > And investigate the behavior of your application *while it is running*. ...or grep the output of strings <progname>. -- Tuomo ... I have the power to channel my imagination into ever-soaring levels of suspicion and paranoia -- Ways for Personal Growth http://www.ericbair.com/humor/PerGrowth.txt |
From: richard b. <ivo...@gm...> - 2008-08-31 06:54:10
|
Hi, I was able to identify all required external dll's using ProcessExplorer at runtime; this is a very handy utility. Thanks for the pointers, no less than 16 external dependencies were identified that are not explicitly specified on the link command; going through the trial and error method of identifying each missing library at runtime via installing and executing (resulting in failure) would have been at the least very annoying and at worst painful. cheers, richard On Fri, Aug 29, 2008 at 8:21 PM, Charles Wilson < cwi...@us...> wrote: > richard boaz wrote: > > > So my question more explicitly is, how can I discover "all" library > > dependencies, even though an external library might not be explicitly > > contained in my application itself? > > cygcheck.exe can be extracted from the cygwin distribution (it is NOT a > cygwin program and can be used standalone). > > DependencyWalker is available from sysinternals. > > However, both of those only show explicitly, linked dependencies. If > your application (or one of your explicitly-depended libraries) uses > LoadLibrary("some other dll"), then you probably need to use > > ProcessExplorer also from sysinternals > > And investigate the behavior of your application *while it is running*. > > -- > Chuck > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > MinGW-users mailing list > Min...@li... > > You may change your MinGW Account Options or unsubscribe at: > https://lists.sourceforge.net/lists/listinfo/mingw-users > |