Ubuntu17.10下Code::Blocks中GTest链接库缺失问题及查找方法
解决Ubuntu 17.10下Code::Blocks使用GTest的"undefined reference"错误
你遇到的问题其实很常见——libgtest-dev这个包只安装了GTest的源代码,并没有预编译好可直接链接的库文件,所以即便你装了包、编译了测试代码,链接阶段还是找不到对应的库,才会报未定义引用错误。下面是具体的解决步骤:
1. 编译生成GTest静态库
libgtest-dev把源码放在了/usr/src/gtest目录下,我们需要手动编译生成静态库:
cd /usr/src/gtest sudo mkdir build cd build cmake .. make
执行完这些命令后,你会在当前的build目录下得到两个静态库文件:libgtest.a(核心测试库)和libgtest_main.a(包含默认main函数的启动库)。
2. 把库文件放到系统标准路径(可选但推荐)
为了让系统和IDE能方便找到这些库,把编译好的库拷贝到系统标准库目录:
sudo cp libgtest.a libgtest_main.a /usr/lib/
如果不想放到系统目录,也可以跳过这一步,后续在Code::Blocks里直接指定库文件的完整路径。
3. 在Code::Blocks中配置链接库
打开你的项目,按以下步骤操作:
- 点击顶部菜单栏的
Project→Build options - 切换到
Linker settings标签页 - 在
Link libraries区域点击Add,分别输入gtest和gtest_main(系统会自动匹配对应的库文件,不需要加lib前缀或.a后缀) - 顺便检查
Search directories→Compiler里是否添加了/usr/include/gtest,确保头文件能被正确找到
4. 验证修复
重新编译你的测试项目,之前的"undefined reference to x"错误应该就消失了。
内容的提问来源于stack exchange,提问作者RLim
相关产品推荐
相关产品推荐

