我一直在使用gtests对个人项目进行单元测试。上周,我升级到了Linux Mint的LTS版本。不幸的是,在那次事件之后,由于gtests链接问题,我无法编译我的项目。
正在发出以下错误:
/usr/bin/x86_64-linux-gnu-ld: build/tests/policies/roundrobin_tests.o: undefined reference to symbol '_ZN7testing4TestC2Ev'
/home/myuser/Documents/googletest-release-1.8.0/googletest/libgtest.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
我已经通过CMake 3.10.2生成了 libgtest.so 和 libgtest_main.so 。 gtest版本是1.8.0版,与我以前使用的相同。
这些库位于/ usr / lib中,并且相应的include文件夹也已复制到/ usr / include。我确定这个位置在我的ld路径中,那不是问题。
我的编译器是g ++ v7.3.0,Im用于编译睾丸的命令是:
g++ -std=c++14 -Wall -O3 -Iinclude build/tests/policies/roundrobin_tests.o -lgtest_main -pthread -o bin/policies/roundrobin_tests
我尝试更改命令中元素的顺序,显式添加-L / usr / lib和-I / usr / include,但不走运。一个有趣的事实是,如果我取消了-pthread标志,则错误仍然相同。
之前使用了相同的命令,唯一的区别是我现在使用的编译器版本与以前使用g ++ 5.4.0的版本相同。有关如何解决此问题的任何见解?
编辑:刚刚使用g ++ 5.4.0和CMake 3.5测试了相同的过程,并出现了相同的问题。