Advertisement Jump to content
Sign in to follow this  
Kurage

Size of Static Link Libraries

This topic is 1792 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I compiled the latest version of the AngelScript Library with MSVC 2012 and succeeded in building static link libraries of debug and release version.
Although I didn't change any compiler and linker options of the MSVC project file, the release version's file size was larger than the debug version.

I think the library for debugging has some information in order to find out bugs more easier, so it is larger than the library for release.
Is this my misunderstanding for the library or do I miss an article about its size?

Edited by Kurage

Share this post


Link to post
Share on other sites
Advertisement

You shouldn't worry too much about the size of the static libraries. It's the size of the final application that matters. :)

 

The compilers usually include lots of extra information in the static libraries that will allow better optimizations when the final application links with it. Also, many optimizations done by the compiler to improve performance increases the size of the code due to inlining functions, rolling out loops, etc.

 

The debug information you mention, is actually present in both the debug version and the release version. As you can debug release code too. This information will only be stripped when linking the final application (if the application project tells the linker to strip it).

Share this post


Link to post
Share on other sites

I see. I didn't know the static library usually has extra information both debug and release version.

Thank you. smile.png

Share this post


Link to post
Share on other sites

I actually got a little curious about this so I generated a 'as_unity_build' module to see how much code there would be without duplicate symbols. Must be a case of a bored late-night Monday I guess. :P

 

Compiling an "in house" release build on Visual Studio with '/MD' and removing the whole program optimization option ('/GL') results in a final object library size of 1.3 MB.  (I should note that for full public release builds you generally want link-time code generation, as this allows the linker to do many extra optimizations at the cost of longer link times.)

 

If anyone is interested here is the cpp file:

 

// as_unity_build.cpp
// Builds the entire angelscript library simply by compiling this single file.
// *note* This should be the only .cpp file that is compiled; do not include any others.

#include "as_atomic.cpp"
#include "as_builder.cpp"
#include "as_bytecode.cpp"
#include "as_callfunc.cpp"
#include "as_callfunc_arm.cpp"
#include "as_callfunc_mips.cpp"
#include "as_callfunc_ppc.cpp"
#include "as_callfunc_ppc_64.cpp"
#include "as_callfunc_sh4.cpp"
#include "as_callfunc_x64_gcc.cpp"
#include "as_callfunc_x64_mingw.cpp"
#include "as_callfunc_x64_msvc.cpp"
#include "as_callfunc_x86.cpp"
#include "as_callfunc_xenon.cpp"
#include "as_compiler.cpp"
#include "as_configgroup.cpp"
#include "as_context.cpp"
#include "as_datatype.cpp"
#include "as_gc.cpp"
#include "as_generic.cpp"
#include "as_globalproperty.cpp"
#include "as_memory.cpp"
#include "as_module.cpp"
#include "as_objecttype.cpp"
#include "as_outputbuffer.cpp"
#include "as_parser.cpp"
#include "as_restore.cpp"
#include "as_scriptcode.cpp"
#include "as_scriptengine.cpp"
#include "as_scriptfunction.cpp"
#include "as_scriptnode.cpp"
#include "as_scriptobject.cpp"
#include "as_string.cpp"
#include "as_string_util.cpp"
#include "as_thread.cpp"
#include "as_tokenizer.cpp"
#include "as_typeinfo.cpp"
#include "as_variablescope.cpp"

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!