您的位置:首页 > 其它

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

2017-06-27 09:43 555 查看
文章整合自:

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环境下安装zlibhttp://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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐