我正在尝试使用 Cmake 实用程序在 Redhat Linux 4.1.2 计算机上编译 C++ 项目。 在 CMakeLists.txt 中,我指定了 GenericUSMModules,如下所示。
ADD_LIBRARY(
GenericUSMModules SHARED
../../Generic/GenericUSMModules/GMUSMActState.cpp
../../Generic/GenericUSMModules/GMUSMActState.h
../../Generic/GenericUSMModules/GMUSMAdditionalOfferChecksAndEdits.cpp
../../Generic/GenericUSMModules/GMUSMAdditionalOfferChecksAndEdits.h
../../Generic/GenericUSMModules/GMUSMAlignmentOfProductsConfigurationAndStrategicOrderManagerChecksAndEdits.cpp
../../Generic/GenericUSMModules/GMUSMAlignmentOfProductsConfigurationAndStrategicOrderManagerChecksAndEdits.h
../../Generic/GenericUSMModules/GMUSMAllSitePart2SiteChecksAndEdits.cpp
)
当我运行 make 命令来编译 C++ 项目时,出现以下错误。 “库 GenericUSMModules 的 ADD_LIBRARY 与 SHARED 选项一起使用, 但目标平台仅支持静态库。相反,将其构建为静态。 这可能会导致问题。” 我无法理解平台不支持共享库的含义。 因为编译后,它生成静态库(GenericUSMModules.a)而不是共享库(GenericUSMModules.so) 请在这方面帮助我。
最佳答案
经过大量搜索后,我发现该问题是由于 RehHat Linux 机器上的 cmake 不兼容造成的。 我在 RedHat 上安装了最新的 cmake 2.8.8。它解决了问题,现在它生成共享库(.so 文件)。
关于c++ - 目标平台仅支持静态库而不支持共享库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11339277/