C++ 移动了库和编译器-结果是。一个文件大10倍。如何找到根本原因?
我工作的一个项目依赖于另一个非常大的内部图书馆 我的项目的CMake文件是基于库CMake文件生成的,它指定编译器、编译器开关等。旧库将编译器指定为GCC4.3.2,而新库将编译器指定为GCC4.7.0 当我们转向新的库版本时,为我的项目生成的二进制文件增长了大约10倍——从35MB增加到123MB 在.a文件上执行nm时,我发现相同的.o文件为库的两个版本生成了.a文件 然而,在使用新库版本生成的文件中,似乎有大约30%的符号(按wc-l计算)C++ 移动了库和编译器-结果是。一个文件大10倍。如何找到根本原因?,c++,unix,gcc,gcc4.7,C++,Unix,Gcc,Gcc4.7,我工作的一个项目依赖于另一个非常大的内部图书馆 我的项目的CMake文件是基于库CMake文件生成的,它指定编译器、编译器开关等。旧库将编译器指定为GCC4.3.2,而新库将编译器指定为GCC4.7.0 当我们转向新的库版本时,为我的项目生成的二进制文件增长了大约10倍——从35MB增加到123MB 在.a文件上执行nm时,我发现相同的.o文件为库的两个版本生成了.a文件 然而,在使用新库版本生成的文件中,似乎有大约30%的符号(按wc-l计算) 以二进制大小出现这种爆炸的潜在原因是什么?我意识
以二进制大小出现这种爆炸的潜在原因是什么?我意识到可能有很多,但我完全不知道——任何暗示都会有帮助 32位到64位?使用调试符号编译?顺便说一句,你的意思是
nmlibsomething.a | wc-l
不是吗?不仅仅是wc-l libsomething.a
.32位vs 64位-不-它是在同一个操作系统上编译的-无论如何都不会导致10倍的放大。是的,它是nm-libsomething.a | wc-l你如何检查调试符号?啊,它是nm-a。不,这似乎没有带来重大的变化。。。