w***g 发帖数: 5958 | 1 同一个程序,完全静态链接,g++出来是strip干净了还剩13M,visual studio express
2010出来是1.7M。怎么会差这么大!!!! |
N***m 发帖数: 4460 | 2 windows一般是净身的
express
【在 w***g 的大作中提到】 : 同一个程序,完全静态链接,g++出来是strip干净了还剩13M,visual studio express : 2010出来是1.7M。怎么会差这么大!!!!
|
x****u 发帖数: 44466 | 3 Win的程序,你还能把api的DLL也静态链接掉?
express
【在 w***g 的大作中提到】 : 同一个程序,完全静态链接,g++出来是strip干净了还剩13M,visual studio express : 2010出来是1.7M。怎么会差这么大!!!!
|
w***g 发帖数: 5958 | 4 API的DLL不算。这就像把Linux的系统调用也静态链接一样是不可能的。我的系统只用标
准c/c++库函数,API DLL动态链接对于比较来说还是公平的。
【在 x****u 的大作中提到】 : Win的程序,你还能把api的DLL也静态链接掉? : : express
|
x****u 发帖数: 44466 | 5 API不是Win的系统调用。。。
用标
【在 w***g 的大作中提到】 : API的DLL不算。这就像把Linux的系统调用也静态链接一样是不可能的。我的系统只用标 : 准c/c++库函数,API DLL动态链接对于比较来说还是公平的。
|
d*********8 发帖数: 2192 | 6 把命令行参数贴出来看看。我怀疑CL没有把C RUNTIME静态编译。
express
【在 w***g 的大作中提到】 : 同一个程序,完全静态链接,g++出来是strip干净了还剩13M,visual studio express : 2010出来是1.7M。怎么会差这么大!!!!
|
w***g 发帖数: 5958 | 7 编译:
/Zi /nologo /W3 /WX- /Ox /Ob2 /Oi /Ot /Oy- /GL /D "WIN32" /D "NDEBUG" /D "_W
INDOWS" /D "_UNICODE" /D "UNICODE" /Gm- /EHsc /MT /GS /Gy /fp:precise /Zc:wc
har_t /Zc:forScope /Fp"Release\nise.pch" /Fa"Release\" /Fo"Release\" /Fd"Rel
ease\vc100.pdb" /Gd /analyze- /errorReport:queue
链接:
/OUT:"D:\src\nise-v10\nise\Release\nise.exe" /INCREMENTAL:NO /NOLOGO "jpeg.l
ib" "libboost_program_options.lib" "PocoFoundationmt.lib" "PocoNetmt.lib" "P
ocoUtilmt.lib" "PocoXMLmt.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "wins
pool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.
lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"Release
\nise.exe.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvo
ker' uiAccess='false'" /DEBUG /PDB:"D:\src\nise-v10\nise\Release\nise.pdb" /
SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /PGD:"D:\src\nise-v10\nise\Release\nise.
pgd" /LTCG /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE
【在 d*********8 的大作中提到】 : 把命令行参数贴出来看看。我怀疑CL没有把C RUNTIME静态编译。 : : express
|
w***g 发帖数: 5958 | 8 找到原因了. g++命令行上加-s, 生成的代码一下子就小了很多, 和windows下差不多了.
_W
wc
Rel
.l
"P
wins
oleaut32.
【在 w***g 的大作中提到】 : 编译: : /Zi /nologo /W3 /WX- /Ox /Ob2 /Oi /Ot /Oy- /GL /D "WIN32" /D "NDEBUG" /D "_W : INDOWS" /D "_UNICODE" /D "UNICODE" /Gm- /EHsc /MT /GS /Gy /fp:precise /Zc:wc : har_t /Zc:forScope /Fp"Release\nise.pch" /Fa"Release\" /Fo"Release\" /Fd"Rel : ease\vc100.pdb" /Gd /analyze- /errorReport:queue : 链接: : /OUT:"D:\src\nise-v10\nise\Release\nise.exe" /INCREMENTAL:NO /NOLOGO "jpeg.l : ib" "libboost_program_options.lib" "PocoFoundationmt.lib" "PocoNetmt.lib" "P : ocoUtilmt.lib" "PocoXMLmt.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "wins : pool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.
|
S***w 发帖数: 1014 | 9 +s 什么意思 普及一下
了.
【在 w***g 的大作中提到】 : 找到原因了. g++命令行上加-s, 生成的代码一下子就小了很多, 和windows下差不多了. : : _W : wc : Rel : .l : "P : wins : oleaut32.
|
t****t 发帖数: 6806 | 10 man gcc
【在 S***w 的大作中提到】 : +s 什么意思 普及一下 : : 了.
|
b******n 发帖数: 592 | 11 you can call strip on binary as well, the downside is you lose many useful
symbols when things go wrong.
了.
【在 w***g 的大作中提到】 : 找到原因了. g++命令行上加-s, 生成的代码一下子就小了很多, 和windows下差不多了. : : _W : wc : Rel : .l : "P : wins : oleaut32.
|
d*********8 发帖数: 2192 | 12 strip 和 gcc -s 应该是差不多的。估计strip参数没选好,或者GCC和STRIP版本不一
致。 |