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