Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何优化C+中链接器的项目+;Qt?_C++_Qt_Gcc_Linker_Mingw - Fatal编程技术网

C++ 如何优化C+中链接器的项目+;Qt?

C++ 如何优化C+中链接器的项目+;Qt?,c++,qt,gcc,linker,mingw,C++,Qt,Gcc,Linker,Mingw,我有一个项目,目前存在一个静态库,一个可执行文件和一个测试可执行文件。这两个可执行文件链接到静态库。静态库包含几乎所有的C++和头文件。 我正在使用Qt5.14,并定义了大约3000个Q_属性s(3000个getter和3000个setter函数)。我启用了-Wa,-mbig obj作为编译器选项,因为mocs_compilation.cpp变得太大而无法编译。该项目目前使用gcc为Mingw中的Windows编译 我目前的问题在于项目链接缓慢。链接器处理静态库需要很长时间 有可能切换编译器或链

我有一个项目,目前存在一个静态库,一个可执行文件和一个测试可执行文件。这两个可执行文件链接到静态库。静态库包含几乎所有的C++和头文件。 我正在使用Qt5.14,并定义了大约3000个
Q_属性
s(3000个getter和3000个setter函数)。我启用了-Wa,-mbig obj作为编译器选项,因为mocs_compilation.cpp变得太大而无法编译。该项目目前使用gcc为Mingw中的Windows编译

我目前的问题在于项目链接缓慢。链接器处理静态库需要很长时间

有可能切换编译器或链接器,但我目前感兴趣的是项目的结构。链接器最喜欢什么

  • 很多.cpp文件和很多.o文件
  • 或者实际上是一个大的.o文件
  • 当我做动态链接时会更快吗
  • 我应该将文件拆分为多个库而不是一个库吗

我真的找不到一个能为这样一个项目提供最佳实践的源代码。

当我进行动态链接时会更快吗?
。您仍然需要像在EXE中一样支付在DLL中链接的费用。唯一的区别是,你只需要花费一次(在链接DLL时),而不是两次使用一对EXE二进制文件。链接器对静态库的处理确实很慢。链接器不处理静态库。它们只是编译器返回的所有.o文件的串联。如果是这样的话,LIB的存档生成花费时间太长,你可以考虑把它分割成不同的LIBs。你能详细说明静态库的处理吗?我想您指的是编译完所有单独的.cpp文件之后的某个步骤。构建输出是否表明这是哪一步?cmake中的步骤称为链接CXX静态库src\liblibocsui.a。我将尝试使用verbose cmake找出确切的步骤。
当我进行动态链接时会更快吗?
多少。您仍然需要像在EXE中一样支付在DLL中链接的费用。唯一的区别是,你只需要花费一次(在链接DLL时),而不是两次使用一对EXE二进制文件。链接器对静态库的处理确实很慢。链接器不处理静态库。它们只是编译器返回的所有.o文件的串联。如果是这样的话,LIB的存档生成花费时间太长,你可以考虑把它分割成不同的LIBs。你能详细说明静态库的处理吗?我想您指的是编译完所有单独的.cpp文件之后的某个步骤。构建输出是否表明这是哪一步?cmake中的步骤称为链接CXX静态库src\liblibocsui.a。我将尝试使用详细的cmake找出确切的步骤。