camster123
asked on
How to reduce the size of both a release and debug Microsoft Visual Studio 2008 C++ 64 bit static library, OpenSSL, compiled with MT and MD?
I wish to reduce the size of both a release and debug Microsoft Visual Studio 2008 64 bit static library, OpenSSL, compiled with MT and MD separately. I read that the /01 option is really guaranteed to make the code smaller and that you have to set /LTCG and /GL to No to shrink the size of the release C++ static library. Also, I read that there is another setting in the the General properties called "No Whole Program Optimization" which might shrink the static library size.
Before I try these things which I read, I wish to determine if they are correct and whether there any another Microsoft Visual Studio 2008 compiler and linker options I should try to reduce the size of both the release and debug Microsoft VIsual Studio 2008 C++ OPenSSL static library compiled with MT and MD separately.
Here is my OpenSSL makefile. Please correct it so i can reduce the size of both a release and debug Microsoft Visual Studio 2008 C++ 64-bit static library, OpenSSL, compiled with MT and MD
This makefile has been automatically generated from the OpenSSL distribution.
# This single makefile will build the complete OpenSSL distribution and
# by default leave the 'intertesting' output files in .\out and the stuff
# that needs deleting in .\tmp.
# The file was generated by running 'make makefile.one', which
# does a 'make files', which writes all the environment variables from all
# the makefiles to the file call MINFO. This file is used by
# util\mk1mf.pl to generate makefile.one.
# The 'makefile per directory' system suites me when developing this
# library and also so I can 'distribute' indervidual library sections.
# The one monster makefile better suits building in non-unix
# environments.
INSTALLTOP=\usr\local\ssl
# Set your compiler options
PLATFORM=VC-WIN64A
CC=cl
CFLAG= /Z7 /MTd /Ox /W3 /Gs0 /GF /Gy /nologo -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DOPENSSL_SYSNAME_WIN32 -DOPENSSL_SYSNAME_WINNT -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECAT E /Fdout32 -DOPENSSL_NO_IDEA -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_CMS -DOPENSSL_NO_JPAKE -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_KRB5 -DOPENSSL_NO_DYNAMIC_ENGIN E
APP_CFLAG=
LIB_CFLAG=/Zl
SHLIB_CFLAG=
APP_EX_OBJ=setargv.obj
SHLIB_EX_OBJ=
# add extra libraries to this define, for solaris -lsocket -lnsl would
# be added
EX_LIBS=wsock32.lib gdi32.lib crypt32.lib advapi32.lib user32.lib
# The OpenSSL directory
SRC_D=.
LINK=link
LFLAGS=/nologo /subsystem:console /opt:ref
RSC=rc
FIPSLINK=$(PERL) util\fipslink.pl
AES_ASM_OBJ=
AES_ASM_SRC=
BN_ASM_OBJ=
BN_ASM_SRC=
BNCO_ASM_OBJ=
BNCO_ASM_SRC=
DES_ENC_OBJ=
DES_ENC_SRC=
BF_ENC_OBJ=
BF_ENC_SRC=
CAST_ENC_OBJ=
CAST_ENC_SRC=
RC4_ENC_OBJ=
RC4_ENC_SRC=
RC5_ENC_OBJ=
RC5_ENC_SRC=
MD5_ASM_OBJ=
MD5_ASM_SRC=
SHA1_ASM_OBJ=
SHA1_ASM_SRC=
RMD160_ASM_OBJ=
RMD160_ASM_SRC=
CPUID_ASM_OBJ=
CPUID_ASM_SRC=
# The output directory for everything intersting
OUT_D=out64Z7MTd
# The output directory for all the temporary muck
TMP_D=tmp64Z7MTd
# The output directory for the header files
INC_D=inc64Z7MTd
INCO_D=inc64Z7MTd\openssl
PERL=perl
CP=$(PERL) util/copy.pl
RM=del /Q
RANLIB=
MKDIR=$(PERL) util/mkdir-p.pl
MKLIB=lib /nologo
MLFLAGS=
ASM=ml /nologo /Cp /coff /c /Cx
# FIPS validated module and support file locations
E_PREMAIN_DSO=fips_premain _dso
FIPSLIB_D=\usr\local\ssl\f ips-1.0\li b
BASEADDR=0xFB00000
FIPS_PREMAIN_SRC=$(FIPSLIB _D)\fips_p remain.c
O_FIPSCANISTER=$(FIPSLIB_D )\fipscani ster.lib
FIPS_SHA1_EXE=
PREMAIN_DSO_EXE=$(BIN_D)\f ips_premai n_dso.exe
########################## ########## ########## ########
# You should not need to touch anything below this point
########################## ########## ########## ########
E_EXE=openssl
SSL=ssleay32
CRYPTO=libeay32
LIBFIPS=libosslfips
Thank you very much,.
Before I try these things which I read, I wish to determine if they are correct and whether there any another Microsoft Visual Studio 2008 compiler and linker options I should try to reduce the size of both the release and debug Microsoft VIsual Studio 2008 C++ OPenSSL static library compiled with MT and MD separately.
Here is my OpenSSL makefile. Please correct it so i can reduce the size of both a release and debug Microsoft Visual Studio 2008 C++ 64-bit static library, OpenSSL, compiled with MT and MD
This makefile has been automatically generated from the OpenSSL distribution.
# This single makefile will build the complete OpenSSL distribution and
# by default leave the 'intertesting' output files in .\out and the stuff
# that needs deleting in .\tmp.
# The file was generated by running 'make makefile.one', which
# does a 'make files', which writes all the environment variables from all
# the makefiles to the file call MINFO. This file is used by
# util\mk1mf.pl to generate makefile.one.
# The 'makefile per directory' system suites me when developing this
# library and also so I can 'distribute' indervidual library sections.
# The one monster makefile better suits building in non-unix
# environments.
INSTALLTOP=\usr\local\ssl
# Set your compiler options
PLATFORM=VC-WIN64A
CC=cl
CFLAG= /Z7 /MTd /Ox /W3 /Gs0 /GF /Gy /nologo -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DOPENSSL_SYSNAME_WIN32 -DOPENSSL_SYSNAME_WINNT -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE
APP_CFLAG=
LIB_CFLAG=/Zl
SHLIB_CFLAG=
APP_EX_OBJ=setargv.obj
SHLIB_EX_OBJ=
# add extra libraries to this define, for solaris -lsocket -lnsl would
# be added
EX_LIBS=wsock32.lib gdi32.lib crypt32.lib advapi32.lib user32.lib
# The OpenSSL directory
SRC_D=.
LINK=link
LFLAGS=/nologo /subsystem:console /opt:ref
RSC=rc
FIPSLINK=$(PERL) util\fipslink.pl
AES_ASM_OBJ=
AES_ASM_SRC=
BN_ASM_OBJ=
BN_ASM_SRC=
BNCO_ASM_OBJ=
BNCO_ASM_SRC=
DES_ENC_OBJ=
DES_ENC_SRC=
BF_ENC_OBJ=
BF_ENC_SRC=
CAST_ENC_OBJ=
CAST_ENC_SRC=
RC4_ENC_OBJ=
RC4_ENC_SRC=
RC5_ENC_OBJ=
RC5_ENC_SRC=
MD5_ASM_OBJ=
MD5_ASM_SRC=
SHA1_ASM_OBJ=
SHA1_ASM_SRC=
RMD160_ASM_OBJ=
RMD160_ASM_SRC=
CPUID_ASM_OBJ=
CPUID_ASM_SRC=
# The output directory for everything intersting
OUT_D=out64Z7MTd
# The output directory for all the temporary muck
TMP_D=tmp64Z7MTd
# The output directory for the header files
INC_D=inc64Z7MTd
INCO_D=inc64Z7MTd\openssl
PERL=perl
CP=$(PERL) util/copy.pl
RM=del /Q
RANLIB=
MKDIR=$(PERL) util/mkdir-p.pl
MKLIB=lib /nologo
MLFLAGS=
ASM=ml /nologo /Cp /coff /c /Cx
# FIPS validated module and support file locations
E_PREMAIN_DSO=fips_premain
FIPSLIB_D=\usr\local\ssl\f
BASEADDR=0xFB00000
FIPS_PREMAIN_SRC=$(FIPSLIB
O_FIPSCANISTER=$(FIPSLIB_D
FIPS_SHA1_EXE=
PREMAIN_DSO_EXE=$(BIN_D)\f
##########################
# You should not need to touch anything below this point
##########################
E_EXE=openssl
SSL=ssleay32
CRYPTO=libeay32
LIBFIPS=libosslfips
Thank you very much,.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
jkr, Thank you very much for your help. Please tell me how to test if the openssl static libray works. Is it nmake ms\ntall.mak test?
Frank
Frank
ASKER
This Experts Exchange has some good hints on how to reduce the size of a Visual Studio static library,
https://www.experts-exchange.com/questions/25788952/Reducing-static-library-size.html
Thank you.