无法识别libgtest.so文件,无法识别格式

时间:2020-03-27 13:33:31

标签: c++ c compiler-errors linker googletest

我正在尝试将googletest集成到我的项目中。 我已经建立了googletest并生成了gtest.so和gtest_main.so。 将这些文件移到我的lib文件夹中,并将包括到我的包含文件夹中。 编译工作正常,但链接时无法识别gtest_main.so格式的格式。 请让我知道可能是什么问题。进行Google测试构建时,我有错过任何选择吗?

我建立googletest-的步骤: 1)从https://github.com/google/googletest克隆代码 2)cd googletest 3)cmake .. 4)制作

CMakeLists.txt->在标志下方启用 设置(CMAKE_CXX_STANDARD 11) set(gtest_force_shared_crt ON CACHE BOOL“” FORCE)

CMakeCache.txt 启用BUILD_SHARED_LIBS

生成libgtest.so时,会将* .so文件复制到lib文件夹 我的项目。

建立我的项目,这是一个小型项目。 收到以下错误 libgtest.so:无法识别文件,无法识别文件格式 collect2:错误:ld返回1退出状态 clang ++:错误:链接器(通过gcc)命令失败,退出代码为1(使用-v查看调用)

1 个答案:

答案 0 :(得分:0)

问题似乎在于测试套件建立在台式机上,而目标处理器是台式机。另一方面,Tizen项目是针对ARM处理器交叉编译的。 Tizen SDK使用单独的堆栈来构建Tizen项目,但无法使用您的库。为非ARM生成的二进制文件不能与ARM二进制文件一起使用。就像@rveerd写道。

不必编译googletest就可以在Tizen项目中使用它。

Tizen SDK支持googletest,创建可在Tizen设备上运行的测试项目的最简单方法是使用SDK中包含的模板。 https://developer.tizen.org/development/tizen-studio/native-tools/running-and-testing-your-app/unit-test上的说明说:

  1. 在Tizen Studio菜单中,选择File> New> Other> Tizen> Tizen Native Unit Test Project
  2. 在“新建Tizen单元测试项目”窗口中:
    • 在“选择要测试的Tizen项目”面板中,选择要测试的项目。
    • 指定测试项目的名称。
    • 指定保存项目的目标文件夹。
    • 点击Finish

如果您喜欢保留已创建的项目并将lib复制到该项目,则应使用与目标体系结构匹配的.so文件。要创建一个,您可以使用Tizen SDK工具来构建googletest,或者尝试已经为Tizen构建的一个。有Tizen RPM包含googletest库,例如http://download.tizen.org/releases/milestone/tizen/unified/tizen-unified_20200521.1/repos/standard/packages/armv7l/gstreamer-utils-1.16.2-24.1.armv7l.rpm

相关问题