由xcode生成的更大的静态库 我有一个C++项目,编译到一个通用的共享库中。现在,我还想要一个同样的静态库。当我重用共享库Xcode项目来创建静态库时,与创建单独的Xcode静态库项目来编译代码时相比,创建的静态库的大小要小得多(~3MB)。(通用-32和64位)

由xcode生成的更大的静态库 我有一个C++项目,编译到一个通用的共享库中。现在,我还想要一个同样的静态库。当我重用共享库Xcode项目来创建静态库时,与创建单独的Xcode静态库项目来编译代码时相比,创建的静态库的大小要小得多(~3MB)。(通用-32和64位),c++,xcode,qt,static-libraries,C++,Xcode,Qt,Static Libraries,以下是我在共享库项目中尝试的内容: xcodebuild -project MyLibrary.xcodeproj build MACH_O_TYPE=staticlib EXECUTABLE_EXTENSION=a GCC_ENABLE_SYMBOL_SEPARATION=NO PACKAGE_TYPE=com.apple.package-type.static-library 两个库在链接到任何C++项目时都很好。code>otool为两个库提供相同的输出 此外,我还尝试使用QtCreat

以下是我在共享库项目中尝试的内容:

xcodebuild -project MyLibrary.xcodeproj build MACH_O_TYPE=staticlib EXECUTABLE_EXTENSION=a GCC_ENABLE_SYMBOL_SEPARATION=NO PACKAGE_TYPE=com.apple.package-type.static-library
<>两个库在链接到任何C++项目时都很好。code>otool为两个库提供相同的输出

此外,我还尝试使用QtCreator创建静态构建,库大小再次约为3MB(32+64位)

我想知道这两个静态库之间的区别是什么,如果它们都链接良好


在Linux上编译时,同一个静态库的大小约为~4MB(32+64位)

我猜静态库项目具有某种编译器优化功能,如循环展开。@IanPudney我在共享和静态项目文件中使用的设置几乎相同。我如何验证是否启用了循环展开?恐怕我对XCode了解不够,无法告诉您。尝试显式生成两个项目的调试生成(带符号的生成),尝试不带优化的非调试生成,或带优化的非调试生成。虽然你可能先检查过这些东西。这种大小的差异表明某个地方的某些设置“不正确”。弄清楚什么可能不那么容易…:(我猜静态库项目具有某种编译器优化功能,如循环展开。@IanPudney我在共享和静态项目文件中使用的设置几乎相同。如何验证是否启用循环展开?恐怕我对XCode了解不够,无法告诉您。请尝试显式地对这两个项目(带符号的生成)都可以尝试不带优化的非调试生成,或带优化的非调试生成。尽管您可能首先检查了这些内容。这种大小差异表明某些设置中存在“不正确”的地方。弄清楚什么可能不那么容易…:(