CMake入门学习+实战<四> 使用外部共享库和头文件+实战:使用CLion调用zlib静态库实现pdf flatedecode解码

文章整合自:

CMake Practice

http://sewm.pku.edu.cn/src/paradise/reference/CMake%20Practice.pdf

CMake 官方文档

https://cmake.org/cmake/help/latest/

以及其他网络资料

目标:

代码移植

静动态库编译调用

文章为CMake Practice的笔记以及一些错误整改或者补充。请参照源文章学习,官方文章以供深入学习。


思维导图为cmake practice目录,阅读时间建议为半天


<三>cmake hello使用外部共享库和头文件


文章中存在的错误:

  • 将.c文件改为.cpp
上一章中我们将.c改成了.cpp,这次一样。
实验了调用LINK_DIRECTORIES(/usr/local/lib)语句更改lib链接lib库目录,发现没有必要。找到.h文件即可。
  • 无法找到库文件路径
./main: error while loading shared libraries: libhello.so.1: cannot open shared object file: No such file or directory
报错信息如上,提供三种解决方案 :
//1. cmake 设置安装路径
#set lib path only works in unix systems
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/usr/local/lib")

//2. t4项目中src目录下的CMakeLists.txt添加如下语句设置自动搜寻路径
SET(CMAKE_EXE_LINKER_FLAGS
          "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,/usr/local/lib")

//3. 系统设置变量
Add
LD_LIBRARY_PATH="/path/you/want1:/path/you/want/2"
to /etc/environment
推荐使用第二种,其他解决方案kaili2017环境下测试无效。
----------------------------------------------------------------
实战——结合CLion调用zlib库完成pdf中stream流flatedecode解码
1. Linux环境下安装zlib
http://www.zlib.net/
官网下载zlib的源码,本次是用最新1.2.11源码,解压后目录运行如下命令
./configure
make
sudo make install
本部分参考:http://xueliang.org/article/detail/20160617235632656

2.加载zlib库完成flatedecode解码

  • 新建项目,在主目录CMakeLists.txt中add_executable语句下方新增语句
SET(CMAKE_EXE_LINKER_FLAGS
        "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,/usr/local/lib")
INCLUDE_DIRECTORIES(/usr/local/include)		#我的include头文件存放目录
TARGET_LINK_LIBRARIES(项目名 libz.a)

  • 项目中包含zlib.h和zconf.h头文件(定义了一个宏,非必须)
  • 具体利用代码
#include <zlib.h>
int infalte_zlib(BYTE * source, BYTE * dest)
{
    //source & dest like what it names

    uLongf dstLen,bufLen;

    //inflate
    uncompress(dest, &dstLen, source, CHUNK_L);

    return 0;
}

测试成功完成flatedecode解码

另推荐一篇博文,使用zlib库实现解压缩zip包:
http://blog.csdn.net/leehdsniper/article/details/51321501

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值