首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Gtest链接错误(从GCC 4.x移至GCC 7.x)

Gtest链接错误是指在将GCC编译器版本从4.x升级到7.x时,使用Gtest进行单元测试时出现的链接错误。Gtest是Google Test的简称,是一个用于C++的开源单元测试框架。

在GCC编译器升级后,由于编译器的一些变化,可能会导致之前使用的Gtest库无法正确链接到新的编译器版本上,从而导致链接错误的问题。

解决Gtest链接错误的方法可以包括以下步骤:

  1. 确认GCC编译器版本:首先需要确认当前使用的GCC编译器的版本是否为7.x。可以通过在命令行中执行gcc --version来查看GCC的版本信息。
  2. 更新Gtest库:如果确认GCC版本为7.x,那么需要更新Gtest库以适配新的编译器版本。可以从Gtest官方网站(https://github.com/google/googletest)下载最新版本的Gtest库。
  3. 重新编译Gtest库:将下载的Gtest库源代码解压后,进入解压后的目录,在命令行中执行以下命令进行编译:
  4. 重新编译Gtest库:将下载的Gtest库源代码解压后,进入解压后的目录,在命令行中执行以下命令进行编译:
  5. 这将会重新编译Gtest库,并生成相应的库文件。
  6. 更新项目配置:将新编译生成的Gtest库文件链接到项目中。具体的操作方式会根据项目的构建工具和配置文件而有所不同。一般来说,需要在项目的构建配置文件中添加对Gtest库的链接选项,并指定新编译生成的库文件路径。
  7. 例如,对于使用CMake构建的项目,可以在CMakeLists.txt文件中添加以下内容:
  8. 例如,对于使用CMake构建的项目,可以在CMakeLists.txt文件中添加以下内容:
  9. 这将会使用CMake的find_package命令找到Gtest库,并将其链接到项目中。
  10. 重新编译项目:完成以上步骤后,重新编译项目即可。确保项目能够正确链接到新的Gtest库,并且没有出现链接错误。

总结一下,Gtest链接错误是在将GCC编译器版本从4.x升级到7.x时,使用Gtest进行单元测试时出现的链接错误。解决方法包括更新Gtest库并重新编译项目,以确保项目能够正确链接到新的Gtest库。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CC++常见gcc编译链接错误解决方法

-Wl,-Bdynamic -lrt -Wl,-Bdynamic -pthread -Wl,-Bstatic -lgtest ("-Wl"表示是传递给链接器ld的参数,而不是编译器gcc/g++的参数...a文件存在,否则会报-l的库文件找不到:ld: cannot find -lACE 6) GCC编译遇到如下的错误,可能是因为在编译时没有指定-fPIC,记住:-fPIC即是编译参数,也是链接参数...conversion before '->' token 18) 下面这个错误是因为没有链接OpenSSL的libcrypto库,或者使用了静态库,而顺序不对: undefined symbol...: EVP_enc_null 19) 下列是链接错误,不是编译错误,加上“-pthread”即可,注意不是“-lpthread”: /usr/local/mysql/lib/mysql/libmysqlclient.a...38)countable_log_writer.cpp:54:50: 错误类型‘const CCounter*’到类型‘CCounter*’的转换无效 [-fpermissive]      return

7.6K30

Linux入门到入土③(GCC、静态与动态链接库、Git、Make、Makefile)

–E test.c –o test.i之后,我们会得到错误提示:stdo.h:没有那个文件或目录。...但是scanf语句的错误不提示。...:用对应的值替换掉代码中的所有宏变量展开头文件:根目录进行描述编译:这个阶段需要 GCC 调用编译器对文件进行编译,最终得到一个汇编文件汇编:这个阶段需要 GCC 调用汇编器对文件进行汇编,最终得到一个二进制文件链接...:这个阶段需要 GCC 调用链接器对程序需要调用的库进行链接,最终得到一个可执行的二进制文件图片多文件编译格式1:多文件同时编译gcc 1.c 2.c 3.c –o test$....动态链接器动态链接器是一个独立于应用程序的进程,属于操作系统,当用户的程序需要加载动态库的时候动态连接器就开始工作了,很显然动态连接器根本就不知道用户通过 gcc 编译程序的时候通过参数 -L 指定的路径

1.4K10

还在用gtest?更好用的测试框架介绍

gtest需要安装有时候带来很多不方便。网络原因,下载安装gtest或者git上拉gtest都可能因为网络原因失败。除了gtest之外,还有很多轻量级易用的单元测试库,比如doctest。...现代C++ unit-test库 除了gtest之外,还有很多轻量级易用的单元测试库,比如doctest和catch。...self-registering test that compiles to an executable looks like this: 相关特性 通过定义DOCTEST_CONFIG_DISABLE标识符可以二进制执行文件中删除与测试相关的所有内容...Clang : -Weverything -pedantic GCC:-Wall -Wextra -pedantic 和 超过35个 其他警告,这些标志不覆盖GCC!——参考这里。...MSVC:/W4 (/Wall太多了—— 如果使用该选项,甚至微软自己的头文件都会产生数千个警告) 命令行无法识别的选项,不会出现错误,并支持与客户机命令行解析进行互操作的前缀。

1.3K10

C++ 项目之Googletest单元测试

然后项目中创建ext目录,里面分为两块 第一块:includes 包含gmock与gtest的include文件,对应于gcc -I参数,头文件路径,包含以.h结尾的头文件 第二块:libs 包含gmock...与gtest的libs文件,对应gcc -L参数,库文件路径,里面包含的是一些.so或.dll等动态或静态链接库 ├── ext │ ├── includes │ │ ├── gmock │...}/gtest/lib/) set(GMOCK_LINK_DIR ${BASE_LIBS}/gmock/lib/) # 去哪里找头文件 相当于gcc/clang 中的-I(i的大写字母)参数 include_directories...(${GTEST_INCLUDE_DIR}) include_directories(${GMOCK_INCLUDE_DIR}) # 去哪里找库文件 .so .dll .dylib 相当于gcc 中的...-L参数 link_directories(${GTEST_LINK_DIR}) link_directories(${GMOCK_LINK_DIR}) 然后为每个test配上链接库即可.

4K20

LLVM+Clang+Libcxx+Libcxxabi(3.6)工具链编译(完成自举编译)

libgcc_s.so 多线程编译的时候时不时会出现奇怪的失败,所以默认改成单线程编译 修复编译完成后的提示输出 NOTICE 由于生成动态库会出现一些问题,所以目前都是采用llvm默认的静态链接的方式...但是静态链接生成的文件比较大,并且链接的东西很多,有可能会出现链接超时的错误。...准备环境及依赖项 cmake Python python-devel/python-dev swig libedit/libedit-devel/libedit-dev(lldb依赖项) gtest..., gtest-devel/gtest-dev(lld依赖项) GCC 4.7 or higher 我编译的环境 系统: CentOS 7 系统库: 详情参见 llvm官网 编译的依赖库: libc...clang 3.6.2 compiler_rt clang_tools_extra 注: (所有的库都会被安装在$PREFEX_DIR里) 额外建议: 如果增加编译组件,比如已装有gtest

1.7K10

C++语言的单元测试与代码覆盖率

同时链接: 待测试的软件库 gtestgtest_main库 pthread库(Google Test使用了这个库所以需要) 编写测试代码,编译并运行测试的可执行程序。...这就是我们链接gtest_main所起的作用。 在实际的测试过程中,你想判断的情况可能不止上面这么简单。下面我们来看看Google Test还能做哪些测试。...它的效果是,如果某个判断出错,则输出一个错误信息,但是接下来仍然会继续执行后面的测试。 可以进行的判断方法主要有下面这些: 布尔判断 ? 二进制判断 ?...需要在编译时,增加参数--coverage: gcc --coverage test.c --coverage等同于编译参数-fprofile-arcs -ftest-coverage以及在链接时增加...这个链接是lcov生成的报告样例:lcov – code coverage report。 安装 lcov并非包含在GCC中,因此需要单独安装。

3K10

protobuf在嵌入式linux下的移植及c语言调用

构建protobuf-c 注意如果在构建protobuf-c之前没有安装protobuf的话,生成protobuf-c的configure文件肯定会报如下错误!!...但在执行autogen.sh时出错了,因为google.com被墙了,我的虚拟机里无法下载gtest,于是手动下载googletest-release-1.5.0.zip,解压缩后,改名为gtest放在...https://github.com/protobuf-c/protobuf-c.git 克隆下protobuf-c源码。...但在执行autogen.sh时出错了,因为google.com被墙了,我的虚拟机里无法下载gtest,于是手动下载googletest-release-1.5.0.zip,解压缩后,改名为gtest放在...} } printf("End\n"); } 4、编译,最终生成main可执行文件,将main放在开发板上,注意,相关的libc库和libprotobuf-c.so链接库都放在了开发板上

6.5K30

​为tinycolinux创建应用包-toolchain和编译方法

关于编译新gcc套件及处理glibc移殖的问题 编译GCC可能面临二种需求环境:1) 本地产生,比如你需要一个bootstrap的gcc低版本来产生高版本,2) 外部crosscompile而来。...请下载tinycolinux live hd一体包后继续: 组建bootstrap toolchain ----- 以下tcz默认全是4.x的,4.x的compiletc.tcz的meta包的dep中提取而来...,请手动某个镜像的4.x/tcz目录下载这些包到/mnt/cobd0/tce/optional,然后在console-nt中直接paste执行以下脚本。...以下包都跟上面一样下载来自4.x,整篇文章的tcz都来自4.x(注意cmake例外): 1) mysql5.5 sudo unsquashfs -f -d / /mnt/cobd0/tce/optional...4.x的cmake需要安装4.x的额外libstdc++,因此我舍弃4.x cmake选择了混合3.x的tcz。

67930

Sonar Scanner 之 C++扫码篇

工具链 - 编译构建gcc/make 假定我们是在Linux下使用gcc进行C++代码的编译,并且使用make进行构建管理。...工具链-单元测试gtest/gmock 对于C++的单元测试来说,推荐Goole Test, 简称gTest以及配套的gMock。具体的用例编写,也不是本文的范围,读者可自行了解。...工作过程 一个典型的过程是: 部署上述工具,形成标准化的编译扫码环境 代码库检出代码,并转换到相应的分支 通过cppcheck进行代码扫码 通过make进行gcc编译,编译过程中通过gccv进行插桩...通过gtest/gmock执行单元测试用例并生成测试报告以及gcc覆盖率报告。...使用gcovr分析gcc覆盖率报告文件,并生成xml格式的cobetura兼容报告。

6.5K40

Centos 7 升级 Glibc-2.28

在尝试修改 Vercel 的serverless function所属位置后, 依旧达不到理想的速度.于是我试着将其完全迁移至了自己的服务器, 直接使用官方提供的 docker compose 部署,...并且Artalk也提供了一个叫做Artransfer的cli工具, 支持原先的多种评论系统直接导出至Artalk.于是我便尝试使用其工具导出评论, 可能我服务器的 linux 内核版本较老, 貌似只支持到...usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin# 这一步时, 发生了错误...目录下的INSTALL中找到, 该版本需要 GCC 4.9 以上 及 make 4.0 以上升级gcc# 直接安装 GCC-8$ yum install -y devtoolset-8-gcc devtoolset.../configure --prefix=/usr/local/make$ make$ make install# 创建软链接$ cd /usr/bin/$ mv make make.bak # backup

26.3K42
领券