SylixOS下Zlib的移植和使用

来源:本站
导读:目前正在解读《SylixOS下Zlib的移植和使用》的相关信息,《SylixOS下Zlib的移植和使用》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《SylixOS下Zlib的移植和使用》的详细说明。
简介:在SylixOS网站的百科页面有“Zlib移植指南”根据指南的说明,可以方便的进行zlib库的移植和安装。

在SylixOS网站的百科页面有“Zlib移植指南”根据指南的说明,可以方便的进行zlib库的移植和安装。

除上述方法外,还能够在RealCoder下编译zlib库,从网站http://www.zlib.net/ 下载zlib source code,这里使用的是tar.xz格式(其他格式应该也可以,没有验证)。下载后的文件名为zlib-1.2.8.tar.xz,使用普通的rar解压软件解压到当前文件即可。解压后的文件所在文件夹名称为zlib-1.2.8。

进入zlib-1.2.8文件夹,打开/watcom/watcom_l.mak文件,感觉此文件比较像makefile。在此文件里面会看到这样一些语句:

C_SOURCE =  adler32.c  compress.c crc32.c   deflate.c    &        gzclose.c  gzlib.c    gzread.c  gzwrite.c    &            infback.c  inffast.c  inflate.c inftrees.c   &            trees.c    uncompr.c  zutil.c

上述语句中包含的**.c文件应该就是实现zlib库压缩功能的文件。将zlib-1.2.8文件夹下中同名的**.c文件单独拷贝到一个文件夹zlib,并将相关的**.h文件也一并拷贝到相同目录下。

打开RealCoder,建立一个“SylixOS Shared Lib”工程,此处命名为zlib_dll,将上一步骤中zlib文件夹下的**.c和**.h文件均拷贝到工程zlib_dll的目录下,并将自动生成的zlib_dll.c文件删除。

修改zlib_dll工程的Makefile,将SRCS修改如下:

#******************************************************************************# src(s) file#******************************************************************************SRCS =     adler32.c      compress.c     crc32.c        deflate.c      gzclose.c      gzlib.c        gzread.c       gzwrite.c      infback.c      inffast.c      inflate.c      inftrees.c     trees.c        uncompr.c      zutil.c

会发现这里的SRCS与watcom_l.mak文件下的C_SOURCE相同。修改target输出如下

#******************************************************************************#  target#******************************************************************************LIB = $(OUTPATH)/libzlib.aDLL = $(OUTPATH)/libzlib.so

其实这里也可以不更改,默认libzlib_dll.so文件也可以使用,只是不习惯。

上述步骤完成后,右键选择“Build Project”,编译成功后会在Debug目录下生成target中定义的两个文件。自此我们已经完成zlib库在SylixOS下编译移植。

/*********************zlib库的验证***********************/

新建“SylixOS App”工程,将生成的main函数更改如下:

#include#include int main(){  /* 原始数据 */  unsigned char strSrc[] = "hello world! aaaaa bbbbb ccccc ddddd 1234567890 notrecongen yes";  unsigned char buf[1024] = {0};  unsigned char strDst[1024] = {0};  unsigned long srcLen = sizeof(strSrc);  unsigned long bufLen = sizeof(buf);  unsigned long dstLen = sizeof(strDst);  printf("Src string:%snLength:%ldn", strSrc, srcLen);   /* 压缩 */  compress(buf, &bufLen, strSrc, srcLen);  printf("After Compressed Length:%ldn", bufLen);   /* 解压缩 */  uncompress(strDst, &dstLen, buf, bufLen);  printf("After UnCompressed Length:%ldn",dstLen);  printf("UnCompressed String:%sn",strDst);  return 0;}

修改makefile,在include path下添加头文件包含路径,修改后如下:

INCDIR  = -I"$(SYLIXOS_BASE_PATH)/libsylixos/SylixOS"INCDIR += -I"$(SYLIXOS_BASE_PATH)/libsylixos/SylixOS/include"INCDIR += -I"$(SYLIXOS_BASE_PATH)/libsylixos/SylixOS/include/inet"INCDIR += -I"../zlib_dll"

在动态链接库下添加需要的zlib库文件名称和目录

#******************************************************************************# depend dynamic library#******************************************************************************DEPEND_DLL = -lvpmpdmDEPEND_DLL += -lzlib#******************************************************************************# depend dynamic library search path#******************************************************************************DEPEND_DLL_PATH = -L"$(SYLIXOS_BASE_PATH)/libsylixos/$(OUTDIR)"DEPEND_DLL_PATH += -L"../zlib_dll/Debug"

这里需要注意动态库名称的填写,在zlib_dll工程中生成的文件是libzlib.so文件,在填写的时候头尾都去除了,并添加了-l。编译zlib_demo工程。

使用FTP工具或者使用RealCoder里面的Upload工具,可以ibzlib.so文件上传到SylixOS设备中的/lib目录,zlib_demo/apps/zlib_demo目录下,执行程序,会输出程序运行结果。说明运行成功。

提醒:《SylixOS下Zlib的移植和使用》最后刷新时间 2024-03-14 01:01:50,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《SylixOS下Zlib的移植和使用》该内容的真实性请自行鉴别。