CMake undefined reference to 'gzdopen'

一、报错发生的环境

  1、Clion在linux下,使用CMake;

  2、使用zlib.h中的gzopen()、gzdopen()函数。

书写的代码如图所示

 

二、编译报错Message

 

三、解决方案

  在CMakeLists.txt文件中,添加

target_link_libraries(u_project_name z)//其中第一个参数u_project_name是你的项目名称,第二个参数z指的就是zlib

   

  此外,问题的前提是已经安装了zlib包,如果还没有得到解决,检查一下是否安装了zlib。若没有,通过如下命令安装即可

sudo apt-get install zlib1g-dev

 

四、原理说明

  1、Linux下使用C/C++的时候,undefined reference to XXX的问题原因:

    就是在链接的时候,链接器找不到XXX这个文件或者类或者函数的定义了。

  2、在Linux下使用Clion的时候,不同于Makefile,CMake编译器只能通过CMakeLists.txt获取编译上下文,故在CMakeLists修改。那么此针对zlib的问题就可以引申出许多类似的问题。

 

【reference】

  [1] https://stackoverflow.com/questions/53298492/how-to-link-zlib-with-cmake

posted on 2021-02-01 16:50  QzZq  阅读(1752)  评论(1)    收藏  举报

导航