digitalmars.D.learn - optlink options to reduce file size?
- simendsjo <simendsjo gmail.com> Jul 27 2011
- simendsjo <simendsjo gmail.com> Jul 27 2011
- Stephan <spam extrawurst.org> Jul 27 2011
- simendsjo <simendsjo gmail.com> Jul 27 2011
- Dmitry Olshansky <dmitry.olsh gmail.com> Jul 27 2011
- Dmitry Olshansky <dmitry.olsh gmail.com> Jul 27 2011
- simendsjo <simendsjo gmail.com> Jul 27 2011
- Dmitry Olshansky <dmitry.olsh gmail.com> Jul 27 2011
- simendsjo <simendsjo gmail.com> Jul 27 2011
- Dmitry Olshansky <dmitry.olsh gmail.com> Jul 27 2011
- simendsjo <simendsjo gmail.com> Jul 27 2011
- q66 <quaker66 gmail.com> Jul 27 2011
- simendsjo <simendsjo gmail.com> Jul 27 2011
- Dmitry Olshansky <dmitry.olsh gmail.com> Jul 27 2011
- Andrej Mitrovic <andrej.mitrovich gmail.com> Jul 27 2011
A simple hello world like dfl application takes 1.2mb. Upx does a great job packing this to 200k, but I wonder if there is a way to make optlink generate smaller executables? I couldn't find a way to get help on the numerous options in optlink, and the help page at digitalmars doesn't list them either.
Jul 27 2011
On 27.07.2011 13:21, simendsjo wrote:A simple hello world like dfl application takes 1.2mb. Upx does a great job packing this to 200k, but I wonder if there is a way to make optlink generate smaller executables? I couldn't find a way to get help on the numerous options in optlink, and the help page at digitalmars doesn't list them either.
Nevermind. I found the switches here: http://www.digitalmars.com/ctg/ctgLinkSwitches.html
Jul 27 2011
On 27.07.2011 13:26, simendsjo wrote:On 27.07.2011 13:21, simendsjo wrote:A simple hello world like dfl application takes 1.2mb. Upx does a great job packing this to 200k, but I wonder if there is a way to make optlink generate smaller executables? I couldn't find a way to get help on the numerous options in optlink, and the help page at digitalmars doesn't list them either.
Nevermind. I found the switches here: http://www.digitalmars.com/ctg/ctgLinkSwitches.html
So what switched did you use to make it link smaller ?
Jul 27 2011
On 27.07.2011 13:42, Stephan wrote:On 27.07.2011 13:26, simendsjo wrote:On 27.07.2011 13:21, simendsjo wrote:A simple hello world like dfl application takes 1.2mb. Upx does a great job packing this to 200k, but I wonder if there is a way to make optlink generate smaller executables? I couldn't find a way to get help on the numerous options in optlink, and the help page at digitalmars doesn't list them either.
Nevermind. I found the switches here: http://www.digitalmars.com/ctg/ctgLinkSwitches.html
So what switched did you use to make it link smaller ?
I haven't gone through the switches yet. /EXEPACK looks interesting.
Jul 27 2011
On 27.07.2011 15:21, simendsjo wrote:A simple hello world like dfl application takes 1.2mb. Upx does a great job packing this to 200k, but I wonder if there is a way to make optlink generate smaller executables? I couldn't find a way to get help on the numerous options in optlink, and the help page at digitalmars doesn't list them either.
if you don't like packing you may try it: ftp://ftp.styx.cabel.net/pub/UniLink/ulnb0319.zip <ftp://ftp.styx.cabel.net/pub/UniLink/> just make sure you configured it correctly (should be straightforward, there are examples) -- Dmitry Olshansky
Jul 27 2011
On 27.07.2011 18:05, Andrej Mitrovic wrote:I've found it interesting how sometimes (not dfl-specific) the first compiled executable is over a meg in size, but as I add a couple of hunderd lines of code the executable size shrinks. I guess some kind of optimization takes place there..
It's possible in case if, for instance, your first version uses more different functions from lib then the second one, in effect linker could pull in less object files from library. -- Dmitry Olshansky
Jul 27 2011
On 27.07.2011 15:45, Dmitry Olshansky wrote:On 27.07.2011 15:21, simendsjo wrote:A simple hello world like dfl application takes 1.2mb. Upx does a great job packing this to 200k, but I wonder if there is a way to make optlink generate smaller executables? I couldn't find a way to get help on the numerous options in optlink, and the help page at digitalmars doesn't list them either.
if you don't like packing you may try it: ftp://ftp.styx.cabel.net/pub/UniLink/ulnb0319.zip <ftp://ftp.styx.cabel.net/pub/UniLink/> just make sure you configured it correctly (should be straightforward, there are examples)
Thanks. Any idea if unilink works with libraries linked with optlink? I get "Error: Invalid library file (3) 'some optlink.lib'"
Jul 27 2011
On 27.07.2011 21:16, simendsjo wrote:On 27.07.2011 15:45, Dmitry Olshansky wrote:On 27.07.2011 15:21, simendsjo wrote:A simple hello world like dfl application takes 1.2mb. Upx does a great job packing this to 200k, but I wonder if there is a way to make optlink generate smaller executables? I couldn't find a way to get help on the numerous options in optlink, and the help page at digitalmars doesn't list them either.
if you don't like packing you may try it: ftp://ftp.styx.cabel.net/pub/UniLink/ulnb0319.zip <ftp://ftp.styx.cabel.net/pub/UniLink/> just make sure you configured it correctly (should be straightforward, there are examples)
Thanks. Any idea if unilink works with libraries linked with optlink? I get "Error: Invalid library file (3) 'some optlink.lib'"
For what it's worth any D2 app uses phobos.lib and obviously that worked. Not that it was linked, library is a sort of a package with obj files. Also check if this is in fact library it might very well be renamed executable in which case 2 first bytes of file are 'MZ'. It should work with both OMF (DMC, old MS VC++ etc.) and COFF (MinGW, modern MS C++ etc.) libraries. -- Dmitry Olshansky
Jul 27 2011
On 27.07.2011 23:00, Dmitry Olshansky wrote:On 27.07.2011 21:16, simendsjo wrote:On 27.07.2011 15:45, Dmitry Olshansky wrote:On 27.07.2011 15:21, simendsjo wrote:A simple hello world like dfl application takes 1.2mb. Upx does a great job packing this to 200k, but I wonder if there is a way to make optlink generate smaller executables? I couldn't find a way to get help on the numerous options in optlink, and the help page at digitalmars doesn't list them either.
if you don't like packing you may try it: ftp://ftp.styx.cabel.net/pub/UniLink/ulnb0319.zip <ftp://ftp.styx.cabel.net/pub/UniLink/> just make sure you configured it correctly (should be straightforward, there are examples)
Thanks. Any idea if unilink works with libraries linked with optlink? I get "Error: Invalid library file (3) 'some optlink.lib'"
For what it's worth any D2 app uses phobos.lib and obviously that worked. Not that it was linked, library is a sort of a package with obj files. Also check if this is in fact library it might very well be renamed executable in which case 2 first bytes of file are 'MZ'. It should work with both OMF (DMC, old MS VC++ etc.) and COFF (MinGW, modern MS C++ etc.) libraries.
Tried a minimal sample using only phobos. Gave me another error: Error: Unresolved external '__acrtused_con' referenced from 't.obj' I downloaded the entire dm compiler and added snn.lib which solved the problem. I'm still getting linker errors on the old file though.dmd t3 dfl.lib
ulink.exe -Go -Tpe t3.obj,t3.exe,,dfl.lib
Error: Invalid library file (3) 'c:\d\ext\dwin\lib\dfl.lib'
Jul 27 2011
On 28.07.2011 2:03, simendsjo wrote:On 27.07.2011 23:00, Dmitry Olshansky wrote:On 27.07.2011 21:16, simendsjo wrote:On 27.07.2011 15:45, Dmitry Olshansky wrote:On 27.07.2011 15:21, simendsjo wrote:A simple hello world like dfl application takes 1.2mb. Upx does a great job packing this to 200k, but I wonder if there is a way to make optlink generate smaller executables? I couldn't find a way to get help on the numerous options in optlink, and the help page at digitalmars doesn't list them either.
unilink. So if you don't like packing you may try it: ftp://ftp.styx.cabel.net/pub/UniLink/ulnb0319.zip <ftp://ftp.styx.cabel.net/pub/UniLink/> just make sure you configured it correctly (should be straightforward, there are examples)
Thanks. Any idea if unilink works with libraries linked with optlink? I get "Error: Invalid library file (3) 'some optlink.lib'"
For what it's worth any D2 app uses phobos.lib and obviously that worked. Not that it was linked, library is a sort of a package with obj files. Also check if this is in fact library it might very well be renamed executable in which case 2 first bytes of file are 'MZ'. It should work with both OMF (DMC, old MS VC++ etc.) and COFF (MinGW, modern MS C++ etc.) libraries.
Tried a minimal sample using only phobos. Gave me another error: Error: Unresolved external '__acrtused_con' referenced from 't.obj' I downloaded the entire dm compiler and added snn.lib which solved the problem.
Yes, I should have mentioned it. Btw snn.lib lives in dmd2\windows\libI'm still getting linker errors on the old file though.dmd t3 dfl.lib
ulink.exe -Go -Tpe t3.obj,t3.exe,,dfl.lib
Error: Invalid library file (3) 'c:\d\ext\dwin\lib\dfl.lib'
weird, could be a bug in unilink. If you inclined that this is the case, send sample obj and lib to developers with some info ulink(at)styx.cabel.net Judging by my experience, sending source code in addition to obj files is appreciated. -- Dmitry Olshansky
Jul 27 2011
On 28.07.2011 00:30, Dmitry Olshansky wrote:On 28.07.2011 2:03, simendsjo wrote:On 27.07.2011 23:00, Dmitry Olshansky wrote:On 27.07.2011 21:16, simendsjo wrote:On 27.07.2011 15:45, Dmitry Olshansky wrote:On 27.07.2011 15:21, simendsjo wrote:A simple hello world like dfl application takes 1.2mb. Upx does a great job packing this to 200k, but I wonder if there is a way to make optlink generate smaller executables? I couldn't find a way to get help on the numerous options in optlink, and the help page at digitalmars doesn't list them either.
unilink. So if you don't like packing you may try it: ftp://ftp.styx.cabel.net/pub/UniLink/ulnb0319.zip <ftp://ftp.styx.cabel.net/pub/UniLink/> just make sure you configured it correctly (should be straightforward, there are examples)
Thanks. Any idea if unilink works with libraries linked with optlink? I get "Error: Invalid library file (3) 'some optlink.lib'"
For what it's worth any D2 app uses phobos.lib and obviously that worked. Not that it was linked, library is a sort of a package with obj files. Also check if this is in fact library it might very well be renamed executable in which case 2 first bytes of file are 'MZ'. It should work with both OMF (DMC, old MS VC++ etc.) and COFF (MinGW, modern MS C++ etc.) libraries.
Tried a minimal sample using only phobos. Gave me another error: Error: Unresolved external '__acrtused_con' referenced from 't.obj' I downloaded the entire dm compiler and added snn.lib which solved the problem.
Yes, I should have mentioned it. Btw snn.lib lives in dmd2\windows\libI'm still getting linker errors on the old file though.dmd t3 dfl.lib
ulink.exe -Go -Tpe t3.obj,t3.exe,,dfl.lib
Error: Invalid library file (3) 'c:\d\ext\dwin\lib\dfl.lib'
weird, could be a bug in unilink. If you inclined that this is the case, send sample obj and lib to developers with some info ulink(at)styx.cabel.net Judging by my experience, sending source code in addition to obj files is appreciated.
Could be a bug, but it's most likely my bad as this is the first time I try unilink. Could someone else on windows verify that dfl cannot be linked with unilink?
Jul 27 2011
== Quote from Dmitry Olshansky (dmitry.olsh gmail.com)'s articleOn 27.07.2011 15:21, simendsjo wrote:A simple hello world like dfl application takes 1.2mb. Upx does a great job packing this to 200k, but I wonder if there is a way to make optlink generate smaller executables? I couldn't find a way to get help on the numerous options in optlink, and the help page at digitalmars doesn't list them either.
if you don't like packing you may try it: ftp://ftp.styx.cabel.net/pub/UniLink/ulnb0319.zip <ftp://ftp.styx.cabel.net/pub/UniLink/> just make sure you configured it correctly (should be straightforward, there are examples)
I don't work on Windows, but I've heard optlink generates debug info and unilink doesn't, so that might be the reason?
Jul 27 2011
On 27.07.2011 20:59, q66 wrote:== Quote from Dmitry Olshansky (dmitry.olsh gmail.com)'s articleOn 27.07.2011 15:21, simendsjo wrote:A simple hello world like dfl application takes 1.2mb. Upx does a great job packing this to 200k, but I wonder if there is a way to make optlink generate smaller executables? I couldn't find a way to get help on the numerous options in optlink, and the help page at digitalmars doesn't list them either.
if you don't like packing you may try it: ftp://ftp.styx.cabel.net/pub/UniLink/ulnb0319.zip <ftp://ftp.styx.cabel.net/pub/UniLink/> just make sure you configured it correctly (should be straightforward, there are examples)
I don't work on Windows, but I've heard optlink generates debug info and unilink doesn't, so that might be the reason?
Even with -O -release? I added -L/NODEBUG and -L/DEBUG, but it seems dmd overrides this with it's switches.
Jul 27 2011
On 27.07.2011 23:35, simendsjo wrote:On 27.07.2011 20:59, q66 wrote:== Quote from Dmitry Olshansky (dmitry.olsh gmail.com)'s articleOn 27.07.2011 15:21, simendsjo wrote:A simple hello world like dfl application takes 1.2mb. Upx does a great job packing this to 200k, but I wonder if there is a way to make optlink generate smaller executables? I couldn't find a way to get help on the numerous options in optlink, and the help page at digitalmars doesn't list them either.
if you don't like packing you may try it: ftp://ftp.styx.cabel.net/pub/UniLink/ulnb0319.zip <ftp://ftp.styx.cabel.net/pub/UniLink/> just make sure you configured it correctly (should be straightforward, there are examples)
I don't work on Windows, but I've heard optlink generates debug info and unilink doesn't, so that might be the reason?
Even with -O -release? I added -L/NODEBUG and -L/DEBUG, but it seems dmd overrides this with it's switches.
executable, IIRC last time I checked unilink converted CV debug info into TDS which is sadlly only recognized by Borland's tools. Note that with or without debug info it still links. -- Dmitry Olshansky
Jul 27 2011
I've found it interesting how sometimes (not dfl-specific) the first compiled executable is over a meg in size, but as I add a couple of hunderd lines of code the executable size shrinks. I guess some kind of optimization takes place there..
Jul 27 2011









simendsjo <simendsjo gmail.com> 