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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM