我试图在我的项目中整合googletest.我已经构建了googletest并生成了gtest.so和gtest_main.so.将这些文件移动到我的lib文件夹中,并包含到我的include文件夹中,编译工作正常,但链接时它无法识别gtest_main.so格式。我在做google测试构建的时候是不是漏掉了什么选项?
我构建googletest的步骤-:1)克隆代码,从 https:/github.comgooglegoogletest。2) cd googletest3) cmake .4) make
CMakeLists.txt -> 启用以下标志 set(CMAKE_CXX_STANDARD 11) set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
CMakeCache.txt 制作了BUILD_SHARED_LIBS ON。
当libgtest.so生成后,将*.so文件复制到我的项目的lib文件夹中。
建立了我的项目,这是一个tizen项目.收到以下错误libgtest.so:文件未被识别,文件格式未被识别collect2:错误:ld返回1个退出状态clang++:错误:linker(通过gcc)命令失败,退出代码1(使用-v查看调用)。
问题似乎在于测试套件是在桌面上构建的,而目标处理器是桌面的。而Tizen项目则是针对ARM处理器交叉编译的。Tizen SDK使用单独的堆栈来做构建Tizen项目,无法使用你的库。为非ARM构建的二进制文件不能与ARM二进制文件一起使用。就像@rveerd写的那样。
不需要编译googletest才能在Tizen项目中使用它。
Tizen SDK支持googletest,创建能在Tizen设备上运行的测试项目的最简单方法是使用SDK中的模板。说明如下 https:/developer.tizen.orgdevelopmenttizen-studionative-toolsrunning-and-testing-your-appunit-test。 说。
File
> New
> Other
> > > > Tizen
> Tizen Native Unit Test Project
.Finish
如果你喜欢留在你已经创建的项目中,并将lib复制到项目中,那么你应该使用与目标架构相匹配的.so文件。要创建一个,你可以用Tizen SDK工具来构建googletest,或者尝试一个已经为Tizen构建的工具。有一些包含googletest库的Tizen RPM,如 http:/download.tizen.orgreleasesmilestonetizenunifiedtizen-unified_20200521.1reposstandardpackagesarmv7lgstreamer-utils-1.16.2-24.1.armv7l.rpm。 .